这题就是一个查找算法,可以直接查找,o(n)的复杂度,代码如下
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
for(int i = 0;i < nums.size();i++){
if(nums[i] == target)
return i;
if(nums[i] > target){
if(i == 0)
return 0;
else
return i;
}
}
return nums.size();
}
};
也可以采用二分查找,o(log n)的复杂度,该算法比直接查找更加优秀,代码如下
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int low = 0;
int high = nums.size()-1;
int middle = 0;
while(low <= high){
middle = (high + low)/2;
if(nums[middle] == target)
return middle;
if(nums[middle] > target)
high = middle - 1;
else
low = middle + 1;
}
return low;
}
};