Search in Rotated Sorted Array
来源:互联网 发布:python中的迭代器 编辑:程序博客网 时间:2024/05/16 00:30
Suppose a sorted array is rotated at some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7
might become 4 5 6 7 0 1 2
).
You are given a target value to search. If found in the array return its index, otherwise return -1.
You may assume no duplicate exists in the array.
Subscribe to see which companies asked this question
解答:这个问题想说明的是,二分查找的有关问题。二分查找适用范围:要在一个“有序”的数组上查找,其中平均and最坏时间复杂度都是O(logN)。本题想说明的是,其实二分查找也可以在有序数组的“旋转”上面使用。只不过多了一步判断哪边是有序【没被旋转破坏】的,即可。
Python代码
class Solution(object): def search(self, a, target): """ :type nums: List[int] :type target: int :rtype: int """ left,right=0,len(a)-1 while left<=right: mid=left+(right-left)/2 if a[mid]==target: return mid if a[left]<=a[mid]: #说明左边已经排序好 if a[left]<=target and target<a[mid]: right=mid-1 else: left=mid+1 else: #说明右边已经排序好 if a[mid]<target and target<=a[right]: left=mid+1 else: right=mid-1 return -1代码说明:在第13行的时候,我犯了一个错误。
if a[left]<=a[mid]: #说明左边已经排序好
在判断哪边排序好的时候,我没有把=放进去,只是一个单纯的小于。然后,程序就报错了。在输入[1,3],1的时候,我无法查找到1。【虽然不知道玄机在哪里,但是我加了个等于,程序就通过了】希望各位小伙伴们指点。
另外,总结出的规律:在前面while这里,有两种表示方法,一种是
while left<=right:在这种情况下,左边left和右边right的更新都可以减一更新,即left=mid+1,right=mid-1
如果是
while left<right:那么,左边left和右边right就只能等于mid这样更新了。即left=mid,right=mid。否则会出现没有考虑完全的情形,进入死循环。大家切记。
0 0
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- 【爬虫初探】新浪微博搜索爬虫总览
- C#课后习题---单选按钮实验
- Socket理解
- 博客管理记录及生活笔记
- hdu 5410 CRB and His Birthday(01+多重背包 dp)
- Search in Rotated Sorted Array
- java 对缺乏潜在类型机制的补偿 :反射
- NOIP2007普及组 纪念品分组 贪心
- Cocos2dx - EventDispatcher事件分发器学习
- 动态规划—Problem J
- Apache 的 httpd.conf 详解(很实用)
- 安装双系统(windows7 + centos)
- A Beautiful Array
- Python3.0没有了raw_input函数