Posted onEdited onInLeetCodeDisqus: Symbols count in article: 873Reading time ≈1 mins.
binary search O(logn) 先判断左半边数多还是右半边数多,再对每一种情况分类讨论
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
classSolution: defsearch(self, nums: List[int], target: int) -> int: l, r = 0, len(nums) - 1 while (l <= r): m = l + (r - l) // 2 if nums[m] == target: return m elif nums[m] > nums[r]: if nums[l] <= target < nums[m]: r = m - 1 else: l = m + 1 else: if nums[m] < target <= nums[r]: l = m + 1 else: r = m - 1 return -1