欢迎光临散文网 会员登陆 & 注册

力扣:搜索插入位置

2023-03-08 19:54 作者:薄荷硬糖酱  | 我要投稿

35. 搜索插入位置

难度简单1914收藏分享切换为英文接收动态反馈

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

请必须使用时间复杂度为 O(log n) 的算法。

 

示例 1:

输入: nums = [1,3,5,6], target = 5输出: 2

示例 2:

输入: nums = [1,3,5,6], target = 2输出: 1

示例 3:

输入: nums = [1,3,5,6], target = 7输出: 4

 

提示:

  • 1 <= nums.length <= 104

  • -104 <= nums[i] <= 104

  • nums 为 无重复元素 的 升序 排列数组

  • -104 <= target <= 104

第一种法:

class Solution {

public:

    int searchInsert(vector<int>& nums, int target) {

        int right,left,mid;

        right=nums.size()-1,left=0;

        while(right>=left){

            mid = (right+left)/2;

            if(nums[mid]>target){

                right=mid-1;

            }else if(nums[mid]<target){

                left=mid+1;

            }else{

                return mid;

            }

        }

        return mid+1;//这里错了

    }

};

不是返回mid+1因为mid没办法小于0(-1)而添加的位置可以在0这里思考错了

第一种法:

class Solution {

public:

    int searchInsert(vector<int>& nums, int target) {

        int right,left,mid;

        right=nums.size()-1,left=0;

        while(right>=left){

            mid = (right+left)/2;

            if(nums[mid]>target){

                right=mid-1;

            }else if(nums[mid]<target){

                left=mid+1;

            }else{

                return mid;

            }

        }

        if(nums[mid]<target){

            return mid;

        }else{

        return mid+1; 

        }

    }

};

在最后那里分辨了一下nums与target的大小

第二种法:

class Solution {

public:

    int searchInsert(vector<int>& nums, int target) {

        int right,left,mid;

        right=nums.size()-1,left=0;

        while(right>=left){

            mid = (right+left)/2;

            if(nums[mid]>target){

                right=mid-1;

            }else if(nums[mid]<target){

                left=mid+1;

            }else{

                return mid;

            }

        }

        return right+1;

    }

};

right在最后可以变成-1

力扣:搜索插入位置的评论 (共 条)

分享到微博请遵守国家法律