35、Search Insert Position
搜索插入位置
給定一個排序數組和一個目標值,如果在數組中找到目標值則返回索引。如果沒有,返回到它將會被按順序插入的位置。
你可以假設在數組中無重複元素。
樣例
[1,3,5,6],5 → 2
[1,3,5,6],2 → 1
[1,3,5,6], 7 → 4
[1,3,5,6],0 → 0
分析:
二分查找。
代碼1:
class Solution {//正常二分查找,返回mid
public:
int searchInsert(vector<int>& nums, int target) {
if(nums.size()<0)return 0;
int lo=0,hi=nums.size()-1;
while(lo<=hi)
{
int mid=lo+(hi-lo)/2;
if(nums[mid]==target)return mid;
if(nums[mid]<target)lo=mid+1;
else hi=mid-1;
}
return lo;
}
};
代碼2:
class Solution {//返回最左邊符合的數
public:
int searchInsert(vector<int>& nums, int target) {
if(nums.size()<0)return 0;
int lo=0,hi=nums.size();
while(lo<hi)
{
int mid=lo+(hi-lo)/2;
if(nums[mid]<target)lo=mid+1;
else hi=mid;
}
return lo;
}
};