LeetCode算法c++刷题-searchInsert

今日刷题

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

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

Example 1:

Input: [1,3,5,6], 5
Output: 2

Example 2:

Input: [1,3,5,6], 2
Output: 1

Example 3:

Input: [1,3,5,6], 7
Output: 4

Example 4:

Input: [1,3,5,6], 7
Output: 4

解题思路:

给出⼀个已经从⼩到⼤排序后的数组,要求在数组中找到插⼊ target 元素的位置。
这⼀题是经典的⼆分搜索的变种题,在有序数组中找到最后⼀个⽐ target ⼩的元素。

示例代码:

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

今天这题和上一篇LeetCode算法c++刷题-searchFirstLastEqualElement相似。已经做过了,所以比较简单啦。

猜你喜欢

转载自blog.csdn.net/u010196944/article/details/127639757