思路:
题目要求找到第一个大于等于target的位置。
根据题目的要求可以定义出最终的状态:
l的左边是小于target的所有值,l的右边是大于等于target的所有值。
r的右边是大于等于target的所有值,r的左边是小于target的所有值。
总结:
l 和 r 的含义是需要和题目一致的。
代码:
class Solution {
public int searchInsert(int[] nums, int target) {
int l = 0, r = nums.length - 1;
while(l <= r) {
int mid = l + (r - l) / 2;
if(nums[mid] >= target) {
r = mid - 1;
}
else {
l = mid + 1;
}
}
return l;
}
}