binary-search.py (664B)
1 class Solution: 2 def search(self, nums: List[int], target: int) -> int: 3 4 done = False 5 lower = 0 6 upper = len(nums) - 1 7 8 while not done: 9 10 diff = upper - lower 11 center = (diff // 2) + lower 12 13 if upper == lower or lower + 1 == upper: 14 if nums[lower] == target: 15 return lower 16 if nums[upper] == target: 17 return upper 18 return -1 19 20 if nums[center] == target: 21 return center 22 23 if nums[center] < target: 24 lower = center 25 else: 26 upper = center