Python描述 LeetCode 81. 搜索旋转排序数组 II
大家好,我叫亓官劼(qí guān jié ),在GitHub & CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在GitHub & CSDN中写博客,唯一博客更新的地址为:亓官劼的博客 ,近期将逐渐同步刷题相关记录到GitHub:[Algorithmic-learning-records] (https://github.com/qiguanjie/Algorithmic-learning-records),大多是本人的刷题记录,如果转载请附上原文地址,谢谢。
由于学习工作的需要,算法刷题将会逐渐由C++向Python3过度,正在过度中,如实现的不太优美,请见谅。
本文原创为亓官劼,请大家支持原创,部分平台一直在恶意盗取博主的文章!!!
若需联系博主,可以联系本人微信:qiguanjie2015
已知存在一个按非降序排列的整数数组 nums
,数组中的值不必互不相同。
在传递给函数之前,nums
在预先未知的某个下标 k
&#xff08;0 <&#61; k &#xff09;上进行了 旋转 &#xff0c;使数组变为 [nums[k], nums[k&#43;1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]]
&#xff08;下标 从 0 开始 计数&#xff09;。例如&#xff0c; [0,1,2,4,4,4,5,6,6,7]
在下标 5
处经旋转后可能变为 [4,5,6,6,7,0,1,2,4,4]
。
给你 旋转后 的数组 nums
和一个整数 target
&#xff0c;请你编写一个函数来判断给定的目标值是否存在于数组中。如果 nums
中存在这个目标值 target
&#xff0c;则返回 true
&#xff0c;否则返回 false
。
示例 1&#xff1a;
输入&#xff1a;nums &#61; [2,5,6,0,0,1,2], target &#61; 0
输出&#xff1a;true
示例 2&#xff1a;
输入&#xff1a;nums &#61; [2,5,6,0,0,1,2], target &#61; 3
输出&#xff1a;false
提示&#xff1a;
1 <&#61; nums.length <&#61; 5000
-104 <&#61; nums[i] <&#61; 104
- 题目数据保证
nums
在预先未知的某个下标上进行了旋转 -104 <&#61; target <&#61; 104
进阶&#xff1a;
- 这是 搜索旋转排序数组 的延伸题目&#xff0c;本题中的
nums
可能包含重复元素。 - 这会影响到程序的时间复杂度吗&#xff1f;会有怎样的影响&#xff0c;为什么&#xff1f;
算法实现
这里直接暴力&#xff0c;数据量小。优化的话可以二分&#xff0c;因为他原先有序&#xff0c;只是一个旋转而已。
class Solution:def search(self, nums: List[int], target: int) -> bool:return target in nums