——Search Insert Position

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;
    }
};



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章