原题
https://leetcode.cn/problems/search-in-rotated-sorted-array/description/
思路
二分查找
复杂度
时间:O(log(n))
空间:O(1)
Python代码
class Solution:
def search(self, nums: List[int], target: int) -> int:
l, r = 0, len(nums) - 1
while l <= r:
mid = (l + r) // 2
if nums[mid] == target:
return mid
elif nums[mid] < nums[r]:
# 在[mid, r]区间升序
if nums[mid] < target and target <= nums[r]:
l = mid + 1
else:
r = mid - 1
else:
# 在[l, mid]区间升序
if nums[l] <= target and target < nums[mid]:
r = mid - 1
else:
l = mid + 1
return -1
Go代码
func search(nums []int, target int) int {
l, r := 0, len(nums)-1
for l <= r {
mid := (l + r) / 2
if nums[mid] == target {
return mid
} else if nums[mid] < nums[r] {
// 在[mid, r]区间升序
if nums[mid] < target && target <= nums[r] {
l = mid + 1
} else {
r = mid - 1
}
} else {
// 在[l, mid]区间升序
if nums[l] <= target && target < nums[mid] {
r = mid - 1
} else {
l = mid + 1
}
}
}
return -1
}

被折叠的 条评论
为什么被折叠?



