[leetcode]34. Search for a Range

class Solution {
public:
    vector<int> searchRange(vector<int>& nums, int target) 
    {
        int l=0;
        int h=nums.size()-1;
        vector<int> ret;
        if( target<nums[l]||target>nums[h] )
        {
                    ret.push_back(-1);
                    ret.push_back(-1);
                    return ret;
        }
        
        while(l<=h)
        {
            if(l==h)
            {
                if(nums[l]!=target)
                {
                    ret.push_back(-1);
                    ret.push_back(-1);
                    return ret;
                }
                else
                {
                    ret.push_back(l);
                    ret.push_back(h);
                    return ret;
                }
            }
            
            int mid=(l+h)/2;
            
            if(nums[mid]==target)
            {
                int i=mid;
                int j=mid;
                while(i>=0&&nums[i]==target)
                    i--;
                while(nums[j]==target&&j<=nums.size()-1)
                    j++;
                ret.push_back(i+1);
                ret.push_back(j-1);
                return ret;
            }
            if(nums[mid]>target)
            {
                h=mid-1;
            }
            else
            {
                l=mid+1;
            }
            
        }
        return ret;
    }
    
};

發佈了73 篇原創文章 · 獲贊 17 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章