LeetCode @ Search in Rotated Sorted Array 旋转数组查找
来源:互联网 发布:淘宝大码女装裤子店铺 编辑:程序博客网 时间:2024/05/23 13:02
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.
来源于Code_Ganker:http://blog.csdn.net/linhuanmars/article/details/20525681
1.my_idea:因为是旋转数组,则一定至少有一半是有序的
2."因为rotate,当我们切取一半的时候可能会出现误区,所以要进一步判断。每次迭代中,分三种情况:"
(1)如果target==A[mid],直接返回mid;
(2)如果A[mid]<A[right],那么(mid,right)一定有序;进一步如果target属于有序区间(A[mid],A[right]】,则left=mid+1,否则target在leftHalf,则right=mid-1。
(3)如果A[mid]>=A[right],那么(mid,right)一定无序,既从left到mid有序;进一步如果target属于有序区间【A[left],A[mid]),则right=mid-1,否则在rightHalf,则left=mid+1。
3.每次切掉一半数据,所以算法的时间复杂度是O(logn),空间复杂度是O(1)。
<span style="font-size:12px;">public class Solution { public int search(int[] A, int target) { int left=0; int right=A.length-1; while(left<=right){ int mid=(left+right)/2; if(A[mid]==target) //(1)一定要先写找到的case return mid; if(A[mid]<A[right]){ //(2)右边有序 if (A[mid]<target && target<=A[right])//如果在有序区间 left=mid+1; else right=mid-1; } else{ //(3)左边有序 if(A[left]<=target && target<A[mid])//如果在有序区间 right=mid-1; else left=mid+1; } } return -1; }}</span>
【后记】这个if判断没有和别的题目统一,所以直接看后面LeetCode二分查找总结就好。
- LeetCode @ Search in Rotated Sorted Array 旋转数组查找
- Search in Rotated Sorted Array-旋转数组的查找
- 【LeetCode】Search in Rotated Sorted Array旋转数组问题总结
- Search in Rotated Sorted Array 旋转数组里查找数 @LeetCode
- LeetCode Search in Rotated Sorted Array 在旋转了的数组中查找
- Leetcode--Search in Rotated Sorted Array(旋转数组的查找)
- LeetCode | Search in Rotated Sorted Array(在旋转数组中查找)
- 【LeetCode刷题】旋转数组的查找 Search in Rotated Sorted Array
- leetCode 33.Search in Rotated Sorted Array(排序旋转数组的查找) 解题思路和方法
- leetcode 81. Search in Rotated Sorted Array II-旋转数组|二分查找
- LeetCode------33. Search in Rotated Sorted Array(旋转数组中查找)
- LeetCode @ Search in Rotated Sorted ArrayII 旋转数组查找II
- leetcode---search-in-rotated-sorted-array---查找
- leetcode 刷题之路 35 Search in Rotated Sorted Array II (旋转排序数组查找终极版)
- 查找已排序的旋转后的数组中的数(Search in Rotated Sorted Array)
- Search in Rotated Sorted Array 在旋转的数组中查找元素
- Search in Rotated Sorted Array II 旋转的数组中查找,有重复元素
- Search in Rotated Sorted Array II 旋转数组二分查找 有重复
- cf#ff(div2)E
- LeetCode @ Search Insert Position 二分查找
- 【Android】Context
- Next Number with Same Set of Digits
- 通配符匹配过程中必定会出现搜索
- LeetCode @ Search in Rotated Sorted Array 旋转数组查找
- 如何测试Nginx的高性能
- PHP生成二维码二个例子
- LeetCode @ Search in Rotated Sorted ArrayII 旋转数组查找II
- Python 构建方便的函数调用
- 映像回忆表1
- 山地剝
- oracle选择数据库字符集
- iOS内存管理策略和实践