二分查找的默认写法都是left <= right 最后跳出条件就是right, left
1 | if (nums[mid] == target) { |
如果只需要单边查找(也就是不特殊处理==target,通常是找小于或者大于某一个值的情况),就用left < right
此时的跳出条件是left = right
1 | if (nums[mid] < target) { |
这种情况下,如果是left变更,mid的计算就是left + (right - left + 1) / 2
这是因为下取整,left可能不会变,所以需要+1来上取整
否则,直接left + (right - left) / 2 即可
这一题:https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/description/
就是典型的单边查找的情况