思路:
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
if(target < nums[0]) return 0;
if(target > nums[nums.size()-1]) return nums.size();
for(int i = 0; i < nums.size(); i++){
if(nums[i] == target) return i;
if(nums[i] > target) return i;
}
}
};
- 利用二分查找,注意最后利用mid找插入位置。复杂度为(O(log(n)))。
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int len = nums.size();
int lo = 0,hi = len-1;
int flag = 0;
int pos = -1;
int mid = 0;
while(lo <= hi){
mid = (hi + lo)/ 2;
if(nums[mid] == target){
flag = 1;
pos = mid;
break;
}
else if(nums[mid] < target){
lo = mid+1;
}
else hi = mid -1;
}
if(flag) return pos;
else if(nums[mid] > target) return mid;
else return mid+1;
}
};