代码:
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int n = nums.size();
if (n == 0) return 0;
/*如果目标值大于 nums 里的最大值,则将其插入到数组的末尾*/
if (target > nums[n-1]) return n;
/*将在区间 [0, n - 1] 内查找目标索引*/
int left = 0, right = n - 1;
while (left < right) {
int mid = left + (right - left) / 2;
if (target > nums[mid]) { //严格小于 target 的元素一定不是解
//下一轮搜索区间是 [mid + 1, right]
left = mid + 1;
} else { //严格大于等于 target 的元素有可能是解
//下一轮搜索区间是 [left, mid]
right = mid;
}
}
return left;
}
};