解题思路
要求时间复杂度为O(logn),空间复杂度为O(1),明显是二分查找
1.二分查找
2.找中值,进行左右判断
代码
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int len = nums.size();//数组大小
int left = 0;//数组左边界
int right = len - 1;//数组右边界
while(left <= right){//左边界小于有边界即数组不为空
int mid = left + (right - left)/2;//中点值
if(nums[mid] < target){//中点值小于目标值
left = mid + 1;//说明要找的只在右边,将左边界右移为中值加一
}else{
right = mid - 1;//否则说明要找的值在左边,将右边界左移为中值加一
}
}
return left;//返回
}
};