1. 二分法的边界以及开闭区间
【left, right】
1. 右区间闭,此时while(left<=right) 中的“=”有意义。
2. 此时的nums[mid]被排除。
while (left <= right) {
int mid = left + ((right-left) >> 1);
if (mid < target) {
left = mid + 1;
} else if (mid > target) {
right = mid - 1;
} else {
return mid;
}
}
【left, right)
1. 右区间闭,此时while(left<=right) 中的“=”无意义。
2. 此时的nums[mid]不需要被排除。
while (left < right) {
int mid = left + ((right-left) >> 1);
if (mid < target) {
left = mid + 1;
} else if (mid > target) {
right = mid;
} else {
return mid;
}
}