一. 二分查找
二分查找是算法里很常见的一道题目。有的题目直接就是要求二分查找,有的题目是子步骤需要用到查找,而这一块也可以用到二分法进行查找。同时二分法具备的时间复杂度为O(logN),是一个非常高效的算法。概念很简单,对于有序 的数组,就是一直使用中点mid 进行筛选,逐步缩小区间大小,最后得到答案。但是概念大家都懂,实际操作的时候却发现总是会出现问题,比如判定条件到底是left < right
还是left <= right
?里面的else if到底是left = mid
还是left = mid + 1
等等?最后返回的是left
还是left + 1
?这使得原本觉得二分法很简单的我们,渐渐地发现:原来我们只会做最基本的那个二分查找,只要稍微加一点变动,就很容易出现纰漏。所以这里就是要好好总结二分查找的真实框架,真正地掌握二分查找的精髓,而不是只会做那道最简单的二分查找。
本文参考链接:《二分查找算法细节详解》,《Leetcode题解 - 二分查找》