力扣题目35、搜索插入位置
1、使用二分法对插入位置进行搜索;题中说到有序、无重复,可考虑使用二分查找方法。
int searchInsert(vector<int>& nums, int target) {
int left = 0, right, middle;
right = nums.size() - 1;
while(left<=right){
middle = left + (right - left)/2;
if(nums[middle]>target){
right = middle -1;
}
else if(nums[middle]<target){
left = middle + 1;
}
else{
return middle;
}
return right + 1;
}
时间复杂度为O(log(n));
2、使用暴力解法为:
int searchInsert(vector<int>& nums, int target) {
for(int i = 0; i<nums.size();i++){
if(nums[i]>=target){
return i;
}
}
return nums.size();
}
时间复杂度为:O(n)