leetcode Search for a Range

来源:互联网 发布:apache怎么读 编辑:程序博客网 时间:2024/04/26 05:27

题目要求O(lgn)的时间复杂度,可知需要利用二分法来解决

代码

class Solution {public:    vector<int> searchRange(int A[], int n, int target) {                searchRangeHelper(A, 0, n-1, target);                if(res.size()==0)        {            res.push_back(-1);            res.push_back(-1);        }                return res;            }            void searchRangeHelper(int A[], int begin, int end, int target)    {                if(begin>end)            return ;                 int mid = (begin+end)/2;                if(A[mid]==target)        {            int index1 = mid;            int index2 = mid;            while(index1>=begin)            {                if(A[index1]!=A[mid])                    break;                index1--;            }                        while(index2<=end)            {                if(A[index2]!=A[mid])                    break;                index2++;            }                        res.push_back(++index1);            res.push_back(--index2);                        return ;                    }                if(A[mid]>target)        {            end = mid - 1;        }        else            begin = mid + 1;                    searchRangeHelper(A, begin, end, target);            }    private:    vector<int> res;};

0 0
原创粉丝点击