35. Search Insert Position

来源:互联网 发布:c语言函数声明格式 编辑:程序博客网 时间:2024/04/30 09:29

本题可以使用二分查找求解。代码如下:

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

或者可以直接使用STL的函数lower_bound:

class Solution {public:    int searchInsert(vector<int>& nums, int target) {        auto it = lower_bound(nums.begin(), nums.end(), target);        return it - nums.begin();    }};

STL相关函数说明:
相关函数说明:

_FwdIt lower_bound(_FwdIt first, _FwdIt last,const _Tp& val)

返回一个非递减序列([first, last))中第一个大于等于val值的迭代器。STL同样使用二分查找法实现其源码。

_FwdIt upper_bound(_FwdIt first, _FwdIt last,const _Tp& val)

返回一个非递减序列([first, last))中第一个小于等于val值的迭代器。STL同样使用二分查找法实现其源码。

0 0
原创粉丝点击