Bootstrap

【C++算法】19.二分查找算法_搜索插入位置


题目链接:

35. 搜索插入位置


题目描述:

efeff0212293e8bdec51b1a8a4850102


解法

找二段性

d2b9036324d20308d0e71b255722b1a9


C++ 算法代码:

class Solution 
{
    public:
    int searchInsert(vector<int>& nums, int target) 
    {
        int left = 0, right = nums.size() - 1;
        while(left < right)
        {
            int mid = left + (right - left) / 2;
            if(nums[mid] < target) left = mid + 1;
            else right = mid;
        }
        if(nums[left] < target) return right + 1;
        return right;
    }
};

图解

例如:nums = [1,3,5,6], target = 5

518188d3443603b7c7da06db3ba06561

经过while(left < right)循环,找到左端点,也就是left=right的时候。得到左端点下标为2

返回2

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;