题目链接:35. 搜索插入位置 - 力扣(LeetCode)
执行用时:3ms
消耗内存:11.98MB
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int left = 0;
int right = nums.size() - 1;
//插入的数在最后
if (nums[right] < target){
return nums.size();
}
//插入的数在最左
if (target <= nums[left]){
return 0;
}
//当left==right,区间[left, right]依然有效
while (left <= right){
int middle = left + ((right - left) / 2);// 防止溢出 等同于(left + right)/2
if (nums[middle] > target){
right = middle - 1;
if (right < left){
return left;
}
if (right == 0){
return middle;
}
}
else if (nums[middle] < target){
left = middle + 1;
if (left == right){
if (target > nums[right]){
return right + 1;
}
return right;
}
}
else {
return middle;
}
}
return right;
}
};