0
点赞
收藏
分享

微信扫一扫

【LeetCode】33. 搜索旋转排序数组

0.总结

  • 待更新~

1.​​题目​​

2.思想

拿到这道题时,我首先考虑的问题是:

  • 找到数组的旋转分界线,然后这样我们就可以还原数组(得到一个有序的数组),然后根据二分查找再来迅速定位。
    但问题是:是否有必要找到数组的旋转分界线?其实是没有必要的。

那么有没有其它的方法解决这个问题呢?
传统的二分类中,

3.代码

下面这段代码是我的第一印象想法,

class Solution:
def search(self, nums: List[int], target: int) -> int:
bound_idx = get_bound(nums)
if bound_idx == 0:

else:

def get_bound(self,nums):
idx = 1
if len(nums) > 1 :
if nums[idx] > nums[idx-1]: # 前两个数满足升序
else:
return idx-1 # 直接返回0

nxt = idx << 1 # 左移一位
while(idx < len(nums) and nums[idx] < nums[nxt]):
idx = nxt

# 说明在区间 [idx,nxt] 中是存在一个
return idx # 返回下标


举报

相关推荐

0 条评论