力扣之二分法

        今天,学习了二分法,详细内容见代码随想录 (programmercarl.com),讲得十分好。

        力扣之35. 搜索插入位置 - 力扣(LeetCode)。

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

        这里与直接二分法稍微不同,存在数组中并没有target,还要找到target插入的位置,这里用了一句return left就解决了。

        这里其实可以自己动手画画,如果找不到target,最后的right是小于left的,而且left = right + 1,left的位置就是第一个大于target的数字的位置,就是target要插入的位置。

附录:

代码随想录 (programmercarl.com)

你可能感兴趣的:(leetcode,算法,职场和发展)