解题思路
“二分查找”
注意考虑 3 种情况:
1、nums[l] < nums[mid]
2、nums[l] > nums[mid]
3、nums[l] == nums[mid]
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class Solution: def search(self, nums: List[int], target: int) -> int: l = 0 r = len(nums) - 1 while l <= r: mid = (l+r) >> 1 if target == nums[mid]: return mid if nums[l] <= nums[mid]: if nums[l] <= target < nums[mid]: r = mid - 1 else: l = mid + 1 else: if nums[mid] < target <= nums[r]: l = mid + 1 else: r = mid - 1 return -1
|