Search for a Range

来源:互联网 发布:农业数据价值 编辑:程序博客网 时间:2024/06/15 21:04

Given a sorted array of integers, find the starting and ending position of a given target value.

Your algorithm's runtime complexity must be in the order of O(log n).

If the target is not found in the array, return [-1, -1].

For example,
Given [5, 7, 7, 8, 8, 10] and target value 8,
return [3, 4].

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


0 0