Sword 53-I

https://leetcode-cn.com/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/solution/

由于是有序数组,所有二分找左界线和右界限。

while i <= j, 最终会在j < i 的时候停下来,所以是可以遍历到整个数组的

又因为 j 不变或者减小,i 不变或者增大必然有一种情况会发生,所以循环是必将停止的

if nums[mid] <= target: i = mid + 1 else: j = mid - 1, 这时候 由于 i = mid + 1所以最后停下的 i 肯定是第一个 > target 的右边界
同理,当 nums[mid] < target 时候, i 肯定是肯定是第一个 >= target 的左边界, 等于说这是一个左闭右开的区间
相减就为答案
 
原文地址:https://www.cnblogs.com/FriskyPuppy/p/14458824.html