python 处理二分法,每次得到数值后先不要return,将right-1继续跑完,这样如果有比它小的数会自动覆盖到原来的结果上。

class Solution:
def search(self , nums , target ):
left,right,tmp=0,len(nums)-1,None
while left<=right:
mid=int(left+(right-left)/2)

        if nums[mid]==target:
            tmp=mid
            right=right-1

        elif nums[mid]<target:  left=mid+1
        elif nums[mid]>target:  right=mid-1

    return tmp if tmp is not None else -1