
Binary Search
iteye_17352
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Leetcode - Count Complete Tree Nodes
Definition of a complete binary tree from Wikipedia: In a complete binary tree every level, except possibly the last, is completely filled, and all nodes in the last level are as far left as possible...原创 2015-06-07 20:51:00 · 116 阅读 · 0 评论 -
Leetcode - H-Index II
Follow up for H-Index: What if the citations array is sorted in ascending order? Could you optimize your algorithm? [分析] 思路:二分查找。参考解法 [url]https://leetcode.com/discuss/56122/standard-binary-searc...原创 2015-09-06 09:39:29 · 112 阅读 · 0 评论 -
Leetcode - Insert Interval
[分析] 这道题思路直接,但bug free需要费些心力。第一版未优化的代码笔记长,未贴。 下面给出的两个实现,实现1是使用二分法找到新区间应插入的位置,然后检查是否需要和上一个区间合并(容易忽略),最后同后面的区间逐个检查是否需要合并。无需额外空间,Code Ganker 指出这种做法严格上非O(N),因为合并时有数组remove操作,最坏情况下是O(N^2),但跑leetcode测试用例这...原创 2015-08-14 10:12:26 · 162 阅读 · 0 评论 -
Leetcode - Kth Smallest Element in BST
[分析] 思路1: 递归中序遍历,返回中序遍历中的第k个数。 思路2: 迭代方式实现的中序遍历,遍历到第k个数即返回。 思路3: 如果可以修改数结构,增加一个leftCount属性,记录当前节点左子树节点个数。 [ref] [url]http://bookshadow.com/weblog/2015/07/02/leetcode-kth-smallest-element-bst/[/...原创 2015-08-11 10:26:40 · 128 阅读 · 0 评论 -
Leetcode - Pow(x, n)
[分析] 数值计算类型题目,二分法或者借助位运算,本题两种方法都可解。实现1是二分法思路,缺点是递归可能导致栈溢出。实现2是借助位运算,并进行了各种溢出检查和处理。实现3同样是位运算法,除了计算过程使用long类型的n外没有进行其他溢出保护,代码非常简洁,利于理解题目本身思路,实际应用中需要像实现2那样做溢出检查以保证程序的健壮性。 [ref] [url]http://www.cnblog...原创 2015-08-11 09:45:53 · 95 阅读 · 0 评论 -
Leetcode - sqrt(x)
[分析] 这是一道数值计算的题目,Code Ganker中指出数值计算类型题目通常就是二分法或者以2为基进行位处理。此题使用二分法,实现套路就是最经典的二分算法。数值计算题需要特别注意的就是数值越界处理。此题一开始没写对就是处理大数据时溢出,Method 1就是溢出版本,mid 为 int 类型,如果没有强转类型,则 mid * mid的结果仍然是int类型,赋给long类型的midSquare...原创 2015-08-10 21:40:08 · 105 阅读 · 0 评论 -
Leetcode - Search for a Range
[分析] 思路1: 伪二分查找。若中间元素正好是target时,分四种小情况:1)左右边界也等于target时,当前这段就是要找的范围,可直接返回;2)只有左边界等于target,则右边界往左靠近一步;3)只有右边界等于target,则左边界往右靠近一步;4)左右边界均不等于target,则左右均往里逼近一步。容易看出在中间元素恰好是target时,算法退化为O(N)的。 思路2: 二分法依次...原创 2015-08-10 08:32:48 · 110 阅读 · 0 评论 -
二分查找算法小结
在做leetcode二分查找类型题目时写while条件总担心写错,也确实好几次都是得到Wrong Answer之后再修改对的。在做Search for a range一题时,虽然被Accept了,但看网上其他同学的解析并不是特别理解,终于下决心去好好研究下最经典的二分查找算法,搞清楚不同情况下为什么while条件写法不一样。很幸运,很快便找到一遍总结得很棒的博客: [url]http://blo...原创 2015-08-10 08:32:31 · 136 阅读 · 0 评论 -
Leetcode - Search in Rotated Sorted Array II
[分析] 同Search in Rotated Sorted Array 的差别在于数组元素可能重复,遇到重复无法推断target所属范围时就一步步移动左边界直到左边界和中间元素不同或者相遇为止。联系Find Minimum in Rotated Sorted Array II进行理解。 [code="java"] public class Solution { public b...原创 2015-08-09 18:47:51 · 104 阅读 · 0 评论 -
Leetcode - Search in Rotated Sorted Array
[分析] 这题可以看做是Find Minimum in Rotated Sorted Array 的扩展,思路仍然是二分,若mid 元素正好是target,皆大欢喜找到了,否则就需要进一步推理target 如果在数组中存在应该在左半边还是右半边,推理思路是:若左边界元素小于mid元素,说明左半边是升序的,查看左边界是否是target,否则若target 落在左边界和mid元素限定的范围内则继续搜左...原创 2015-08-09 17:47:29 · 83 阅读 · 0 评论 -
Leetcode - Find Peak Element
[分析] 暴力法,按序扫描数组,找到peak element。提示说复杂度可以是logN级别的,那就要二分查找了,如何进行二分呢?考察nums[mid]和其左右相邻元素:若nums[mid] < nums[mid + 1], 则右侧必存在一个局部最大值,简略证明:若右侧一直是升序,则最后一个元素是peak element, 否则,第一次升序的波峰处是一个peak element。同理,若num[m...原创 2015-08-09 16:56:23 · 101 阅读 · 0 评论 -
Leetcode - Find Minimum in Rotated Sorted Array II
[分析] Find Minimum in Rotated Sorted Array是基础版,可用于打开基础思路,升级版是要考虑数组可能有重复元素。将题目中的case旋转多次找出思路,直接的思路是顺序遍历找到第一个非升序的元素,这种做法复杂度是O(N),优化的做法是每次通过比较中间元素和左边界元素来截掉一半元素。若nums[left] < nums[mid],说明左半边是升序,最小元素在右半边中,若...原创 2015-08-09 12:19:24 · 107 阅读 · 0 评论 -
Leetcode - Search Insert Position
[分析] 经典二分查找,下面代码实现了迭代方式,可以验证,若直到循环结束也没有找到目标元素,则left恰好指在比target大的第一个位置, right恰好指在比target小的最后一个位置,因此返回left即可。开始没注意到这个规律,卡在循环结束该返回什么上。 [code="java"] public class Solution { public int searchInse...原创 2015-08-09 11:06:09 · 84 阅读 · 0 评论 -
Leetcode - Minimum Size Subarray Sum
Given an array of n positive integers and a positive integer s, find the minimal length of a subarray of which the sum ≥ s. If there isn't one, return 0 instead. For example, given the array [2,3,1...原创 2015-07-22 21:01:05 · 107 阅读 · 0 评论 -
Smallest Rectangle Enclosing Black Pixels
An image is represented by a binary matrix with 0 as a white pixel and 1 as a black pixel. The black pixels are connected, i.e., there is only one black region. Pixels are connected horizontally and v...原创 2016-02-13 12:39:48 · 263 阅读 · 0 评论