Friday, September 12, 2014

Leetcode: Search for a Range @Python

class Solution:
    # @param A, a list of integers
    # @param target, an integer to be searched
    # @return a list of length 2, [index1, index2]
    def searchRange(self, A, target):
        left,right,idx=0,len(A)-1,-1
        while left<=right:
            mid=(left+right)//2
            if A[mid]==target:
                idx=mid
                break
            elif A[mid]<target:
                left=mid+1
            elif A[mid]>target:
                right=mid-1
        if idx==-1:
            return [-1,-1]
        rl,rr=left,right
        ml=mr=mid
        while rl<ml:
            mml=(rl+ml)//2
            if A[mml]==target:
                ml=mml
            else:
                rl=mml+1
        while rr>mr:
            mmr=-((-rr-mr)//2)
            if A[mmr]==target:
                mr=mmr
            else:
                rr=mmr-1
        return [rl, rr]

No comments :

Post a Comment