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 # 返回下标