1.左闭右闭,[left,right]
2.左闭右开 [left,right); (left,right]
区别在于,做while判断时,while(left<=right)和while(left<right)
以及middle的取值
情况1:
if (nums[middle] > target) {
right = middle; // target 在左区间,在[left, middle)中
} else if (nums[middle] < target) {
left = middle + 1; // target 在右区间,在[middle + 1, right)中
}
情况2:
if (nums[middle] > target) {
right = middle - 1; // target 在左区间,所以[left, middle - 1]
} else if (nums[middle] < target) {
left = middle + 1; // target 在右区间,所以[middle + 1, right]
}
3. C++求数组的长度函数为:nums.size();
4.二分法中防止(left+right)/2溢出,可以使用left+((right-left)/2);
5.在用左闭右开的二分法时,注意right的取值,和第一种方法不同,它不是对应数组首尾