查找range相比简单版的二分查找, 考察的点主要还是逻辑条件的判断以及边界值的判断使用这种方式,需要注意的三个细节,1:是index的默认值为-1。 -1为默认的返回值,即失败时返回-12:判断条件, num[mid] >= target 很好的覆盖了将end缩短的条件3:index的赋值,遍历一...
分类:
其他好文 时间:
2015-09-12 21:35:58
阅读次数:
157
5、二分查找判定树 ??? 二分查找过程可用二叉树来描述:把当前查找区间的中间位置上的结点作为根,左子表和右子表中的结点分别作为根的左子树和右子树。由此得到的二叉树,称为描述二分查找的判定树(Decisi...
分类:
其他好文 时间:
2015-09-12 16:22:56
阅读次数:
269
【题目大意】有N间牛舍和M头牛,告诉你每个牛舍的位置,求出两头牛之间最小距离的最大值。【思路】二分判断两头牛之间的最小距离d,通过贪心法进行验证。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std...
分类:
其他好文 时间:
2015-09-11 23:27:46
阅读次数:
235
【题目描述】把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增序列的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。【解决方案】1. 使用二分查找,画图思考;2. 考虑旋转数组的数量为0时(即为...
分类:
编程语言 时间:
2015-09-11 00:06:52
阅读次数:
246
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=23362题意:定义含有平方数因子的数为完全平方数(平方数因子不包含1)。求第k个非完全平方数。思路:我们先求出[1, n]的非完全平方数的个数,然后利用二分来查找正好等...
分类:
其他好文 时间:
2015-09-09 13:13:25
阅读次数:
151
二分查找二分查找的原理很简单:在一个有序数组中(本文讨论的是升序,降序同理)从数组中间的元素开始,如果A[mid]大于被查找元素key,那么就在A[0]到A[mid-1]中查找,反之在A[mid++]到A[A.lenth - 1]中查找。从这看来,递归的意味又很浓啊,当然也可以用非递归的方式,效率更...
分类:
其他好文 时间:
2015-09-09 13:04:33
阅读次数:
255
public int find(long searchKey){ int i; int begin = 0; int end = nElems - 1; while(true){ ...
分类:
编程语言 时间:
2015-09-07 22:45:06
阅读次数:
196
在做leetcode二分查找类型题目时写while条件总担心写错,也确实好几次都是得到Wrong Answer之后再修改对的。在做Search for a range一题时,虽然被Accept了,但看网上其他同学的解析并不是特别理解,终于下决心去好好研究下最经典的二分查找算法,搞清楚不同情况下为什么...
分类:
其他好文 时间:
2015-09-05 12:30:39
阅读次数:
196
题目来源:《剑指offer》面试题38 题目:统计一个数字在排序数组中出现的次数。例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4. 分析:排序数组,使用二分查找。分别找到数组中第一个k的索引,和最后一个k的索引。相减加一便可。#inclu...
分类:
编程语言 时间:
2015-09-04 22:34:13
阅读次数:
173