34. Search for a Range

来源:互联网 发布:vue.js prop 编辑:程序博客网 时间:2024/06/07 13:13

简单题,先找数字的位置,再找范围。

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