题目:对于一个排序好的非递减数组,查找指定值,如果有返回下标,没有返回应该插入的位置
思路:
1.处理小于数组第一个数的情况,返回0
2.处理大于数组最后一个的情况,返回nums.size()+1
3.对普通情况进行一边查找,一边查找下一个元素比目标值大的位置
算法复杂度:O(n)
代码:
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;
return nums.size();
}
};
收获:
学会如何设计时间复杂度更低的算法