23 lines
576 B
Python
23 lines
576 B
Python
def search_rotated(nums, target):
|
|
l, r = 0, len(nums) - 1
|
|
while l <= r:
|
|
m = (l + r) // 2
|
|
if nums[m] == target:
|
|
return m
|
|
if nums[m] >= nums[l]:
|
|
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
|
|
|
|
|
|
if __name__ == "__main__":
|
|
print(search_rotated([4, 5, 6, 7, 0, 1, 2], 0))
|
|
print(search_rotated([4, 5, 6, 7, 0, 1, 2], 3))
|