Binary Search:34. Search for a Range

来源:互联网 发布:网络十大公会 编辑:程序博客网 时间:2024/05/21 06:26

使用两次二分查找法,第一次找到左边界,第二次调用找到右边界即可.

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


原创粉丝点击