欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【LeetCode】在有序数组中找到给定元素或给定元素的插入位置:Search Insert Position

程序员文章站 2022-03-13 12:27:29
...

Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.

You may assume no duplicates in the array.

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], 0
Output: 0

代码如下:

class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
        return distance(nums.begin(), lower_bound(nums.begin(), nums.end(), target));
    }
    
    template<typename ForwardIterator, typename T>
    ForwardIterator lower_bound(ForwardIterator start, ForwardIterator end, T target) {
        while(start != end) {
            auto mid = next(start, distance(start, end)/2);
            if(*mid < target) start = mid + 1;
            else end = mid;
        }
        
        return start;
    }
};

 

相关标签: 数据结构与算法