「Leetcode刷题」「33」搜索旋转排序数组.py

# leetcode submit region begin(Prohibit modification and deletion)from typing import *class Solution: def search(self, nums: List[int], target: int) -> int: left, right = 0, len(nums)-1 while left <= right: mid = left + (right-left) // 2 if nums[mid] == target: return mid """ 我们把数组二分后,要么左边有序,要么右边有序 因为只有有序,才能二分, 所以我们得根据有序的那个部分 确定我们该如何改变二分查找的上下界 """ # 如果旋转数组在左半部分有序 if nums[left] <= nums[mid]: # 并且目标值在左半部分里 if nums[left]<=target<nums[mid]: right = mid-1 else: left = mid + 1 # 如果旋转数组左半部分无序, # 说明旋转点在左半部分, # 那么右半部分必然有序 else: # 并且目标值在右半部分 if nums[mid]<target<=nums[right]: left = mid + 1 else: right = mid-1 return -1# leetcode submit region end(Prohibit modification and deletion)

———————————————–

如果是第一次阅读文章,可以看看下面的话。

以上内容由平时积累而成,尽量保证代码与注释合在一起,并未做过多篇幅的解释。不一定是最优解,但一定是自己能看得懂的。有疑问的地方请留言评论,我在评论中给详细解答。如果题干是原题,就没有写在文章中。后续内容会慢慢发出

欢迎大家评论,收藏和转发。

感谢大家的点赞和关注。

先赞后看,年薪百万

红帽帽,白签签,一起排队做酸酸。愿疫情早日过去。

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
用户投稿
上一篇 2022年6月14日 09:11
下一篇 2022年6月14日 09:11

相关推荐

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息