二分法模版,适用于各种二分法问题。
lo+1<hi 让最后结果得到两个candidate供我们选择
mid = lo + (hi - lo)/2; 防止越界问题。
check那部分是我们遇到大多数二分问题需要考虑的部分。
int lo = 0;
int hi = nums.length - 1;
while (lo + 1 < hi) {
int mid = lo + (hi - lo) / 2;
if (check) {
//do something
}
}
if (nums[hi] == target) {
return hi;
}
if (nums[lo] == target) {
return lo;
}