Binary Search

来源:互联网 发布:linux如何安装vnc 编辑:程序博客网 时间:2024/06/15 05:00

367. Valid Perfect Square:判断某个数是否为完全平方数,不准使用sqrt等内置函数。Binary search 用来缩小范围。

441. Arranging Coins:把硬币摆成楼梯的形状,求解最多完成的完整楼梯层数。和367完全一样。

167. Two Sum II - Input array is sorted:在排序后的数组中查找两个数,和为目标target。

35. Search Insert Position:给定已经排好序的数组和一个给定值,找出插入的位置。

374. Guess Number Higher or Lower:猜数字的大小。higher or lower,一样一样的。

278. First Bad Version:找出第一个bad version。以上的为三类分类问题,大,小,等于。二类分类问题,是或者不是,因此要考虑死循环的问题。high始终指示目前找到的最小的bad version,low起初指示的是目前找到的最大的good version。但是因为mid存在加一机制,可能加到bad version 里面,因此取等号时找到特定值。

475. Heaters**:给出heaters位置和house位置,确定最小heater半径。这道题其实不需要自己实现binary search,而是利用binary search作为查找的一种方法,可以用其他查找方法。

436. Find Right Interval:给出很多区间,找到每个区间右侧第一个区间。这道题和475相似,使用binary search只是作为查找方式。用map做更简单。

300. Longest Increasing Subsequence**:

74. Search a 2D Matrix:实际上变为一维问题。查找某个值。

240. Search a 2D Matrix II:矩阵每行从左到右每列从上到下递增。查找某个元素。

230. Kth Smallest Element in a BST:找到BST中第k个最小的元素。中序遍历。另外使用递归的方法做。

378. Kth Smallest Element in a Sorted Matrix**:矩阵元素按照从左到右从上到下的顺序分别增大。binary  search关键在于减小search space。无法建立index的直接关系,那么就建立range的关系。

162. Find Peak Element:找到数组中任意一个极大值点。binary search 其实是用来缩小范围用的。确保缩小范围后有解,就可以用。

153. Find Minimum in Rotated Sorted Array:将一个序列升序排序后,循环平移。然后找出最小值。漂亮。

34. Search for a Range:给定一个有序数组,确定范围。相当于搜了两次,一次搜左端点,一次搜右端点。

222. Count Complete Tree Nodes:求complete  tree节点数。可以遍历求得。

392. Is Subsequence:

209. Minimum Size Subarray Sum:




0 0
原创粉丝点击