二分搜索
文章平均质量分 65
wnjason
这个作者很懒,什么都没留下…
展开
-
LeetCode---Search a 2D Matrix
题目大意:给出一个二维数组,数组中每一维的数从左到右一次递增,同时当每一维的首元素大于上一维的尾元素,判断数组中是否存在所给的目标数。算法思想:把二维数组看做是等分成了几段的一维数组,然后将其当成递增的一维数组进行二分搜索。1.计算出二维数组的行数和列数,从而计算出数组中元素的个数。2.为了方便计算中间元素行和列,这里搜索的左端初始为1,右端初始为数组中元素的个数。3.先计算中原创 2015-11-05 21:58:50 · 270 阅读 · 0 评论 -
LeetCode---Search a 2D Matrix II
题目大意:给出一个二维数组,判断目标数是否在数组中,数组中元素从左到右一次递增,从上到下一次递增。算法思想:1.计算出数组的行数和列数。2.将目标数和数组中右上角的元素比较,如果目标元素小于该数则说明该数所在列中的元素都大于目标数,应该缩小列数;如果目标数大于该数,则说明该数所在的行中所有的数都大于该数,应该增大行数;如果目标数等于该数,则说明目标数在数组中存在。代码如下:cl原创 2015-11-06 10:45:09 · 248 阅读 · 0 评论 -
LeetCode---Search for a Range
题目大意:给出一个已排序的数组和一个目标数值,寻找该数值在数组中的起点和终点。如果不存在则返回(-1,-1).时间复杂度为logn算法思想:1.如果数组长度为0则直接返回(-1,-1)2.利用STL中的equal_range()算法二分搜索出目标值的区间。3.判断是否存在目标区间如果不存在则返回(-1,-1),若存在则计算出区间起点和终点。4.返回区间。代码如下:cla原创 2015-10-26 18:45:24 · 276 阅读 · 0 评论 -
LeetCode---First Bad Version
题目大意:一个产品经理领导开发一个产品,发现没有通过质量检测,他们的产品是基于之前的产品开发的,如果之前的产品没通过检测那么以后的肯定也通不过检测,现在要求找出版本号最低的没通过检测的产品。算法思想:利用二分搜索来查找,首先找出版本号的中值,判断其是坏产品,若是则上界值减1,若不是则下界值加1,如果找到该中值是坏产品且之前一个是好产品则它就是要找的版本号最小的坏产品。注意:求中值时应用 m原创 2015-11-16 11:41:20 · 315 阅读 · 0 评论