Leetcode35 搜索插入位置

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

你可以假设数组中无重复元素。

示例 1:

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

示例 2:

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

示例 3:

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

示例 4:

输入: [1,3,5,6], 0
输出: 0

思路:在二分算法的基础上改进,如果在nums中找到,则返回对应的索引。如果没有找到target则返回应该插入的索引

满足条件如下:

nums[mid] ==target或者nums[mid-1]

nums[mid]

如果第一次循环没有找到,那么二分缩小搜索范围:

nums[mid]

nums[mid]>target  则end = mid-1

注意:  上述方法需要处理边界问题,否则无法正确返回索引。

class Solution {
public:
    int searchInsert(vector& nums, int target) {
        int begin  = 0 , end = nums.size()-1;
     //处理边界
        if(targetnums[end])  return end+1;
     
        while(begin<=end)
        {
            int mid = (begin+end)/2;
            if((nums[mid]==target)||(nums[mid-1]

 

你可能感兴趣的:(algorithm)