![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二分查找
文章平均质量分 72
Kavin_Liang
Stay hungry. Stay foolish
展开
-
LintCode 二分法查找, 搜索插入位置 和 二维矩阵
1. 二分查找给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。 样例 在数组 [1, 2, 3, 3, 4, 5, 10] 中二分查找3,返回2。 挑战 如果数组中的整数个数超过了2^32,你的算法是否会出错?solution: 注意如果出现重复的数字时我们需要放回第原创 2015-10-05 17:02:56 · 1424 阅读 · 0 评论 -
LintCode x的平方根
x的平方根实现 int sqrt(int N) 函数,计算并返回 N 的平方根。 样例 sqrt(3) = 1 sqrt(4) = 2 sqrt(5) = 2 sqrt(10) = 3 挑战 O(log(x))solution: 如果使用蛮力法来求解的话,肯定是会超时的。因此,我们需要使用牛顿迭代法来求解这问题 牛顿迭代法: 对于给定一个函数f(x) = 0,的解为x0x_{0};原创 2015-10-05 20:23:06 · 1563 阅读 · 0 评论 -
LintCode 寻找旋转排序数组中的最小值
1 . 寻找旋转排序数组中的最小值假设一个旋转排序的数组其起始位置是未知的(比如0 1 2 4 5 6 7 可能变成是4 5 6 7 0 1 2)。 你需要找到其中最小的元素。 你可以假设数组中不存在重复的元素。 样例 给出[4,5,6,7,0,1,2] 返回 0solution: 本题可以直接使用蛮力法计算复杂度为O(n),但是使用蛮力法的话会失去本题的意思,因为数组是由排序数组旋转之后原创 2015-10-07 17:56:44 · 1034 阅读 · 0 评论 -
LintCode 第一个错误的代码版本
第一个错误的代码版本代码库的版本号是从 1 到 n 的整数。某一天,有人提交了错误版本的代码,因此造成自身及之后版本的代码在单元测试中均出错。请找出第一个错误的版本号。 你可以通过 isBadVersion 的接口来判断版本号 version 是否在单元测试中出错,具体接口详情和调用方法请见代码的注释部分。 样例 给出 n=5 调用isBadVersion(3),得到false 调用isB原创 2015-10-08 20:28:40 · 1093 阅读 · 0 评论 -
LintCode 木材加工
木材加工有一些原木,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小段的数目至少为 k。当然,我们希望得到的小段越长越好,你需要计算能够得到的小段木头的最大长度。 样例 有3根木头[232, 124, 456], k=7, 最大长度为114. 注意 木头长度的单位是厘米。原木的长度都是正整数,我们要求切割得到的小段木头的长度也要求是整数。无法切出要求至少 k 段的,则返回 0 即可原创 2015-10-08 21:19:34 · 1312 阅读 · 0 评论