#python3
class Solution:
def search(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
left = 0
right = len(nums)-1
# 先找到最小数的位置
# 左大右小
while left<right:
mid = (left+right)//2
if nums[mid]>nums[right]: left=mid+1
else:right=mid
root = right # 此时right = left
left = 0
right = len(nums)-1
while left<=right:
mid = (left+right)//2
realmid = (mid+root)%len(nums)
if nums[realmid]==target:return realmid
if nums[realmid]<target:left=mid+1
else:right=mid-1
return -1
leetcode33. 搜索旋转排序数组
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 描述 跟进“搜索旋转排序数组”,假如有重复元素又将如何?是否会影响运行时间复杂度?如何影响?为何会影响?写出一个函...
- 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 ...