方法1:平凡思路从前往后比较,小于等于就停止,O(n)。
方法2:在学习二分查找的时候知道二分查找不仅可以查找到元素是否存在,如果查找不到,那么停止的位置就是插入的位置。所以重新写一遍二分查找就好了,二分查找也有递归和非递归的,比较喜欢非递归,O(logn)。
遍历法:
class Solution {
public:
intsearchInsert(vector<int>& nums, int target) {
inti = 0;
for(; i < nums.size(); ++i)
{
if(target < nums[i] || target == nums[i])
break;
}
returni;
}
};
二分法:
class Solution {
public:
intsearchInsert(vector<int>& nums, int target) {
intp = 0, q=nums.size(),mid = nums.size() / 2;
while(p!=q)
{
if(target == nums[mid])
returnmid;
elseif (target < nums[mid])
q= mid;
else
p= mid+1;
mid= (p + q) / 2;
}
returnp;
}
};