二分查找也常被称为二分法或者折半查找,每次查找时通过将待查找区间分成两部分并只取
一部分继续查找,将查找的复杂度大大减少。对于一个长度为
O
(
n
)
的数组,二分查找的时间复
杂度为
O
(
log
n
)
。
如何定义区间开闭性,第一尝试熟练使用一种写法,比如左闭右开,或左闭右闭。第二思考如果最后区间只剩一个数或两个数,写法是否陷入死循环,如果写法无法跳出死循环,建议换一种写法。
二分查找和双指针区别,双指针是一个一个看,二分查找是指针每次移动半个区间。
69 给定一个非负整数,求它的开方,向下取整
书中最优解
int mySqrt(int a) {
if (a == 0) return a;
int l = 1, r = a, mid, sqrt;
while (l <= r) {
mid = l