[Leetcode] search in rotated sorted array ii 搜索旋转有序数组
2017-07-09 15:22
671 查看
Follow up for "Search in Rotated Sorted Array":
What if duplicates are allowed?
Would this affect the run-time complexity? How and why?
Write a function to determine if a given target is in the array.
题意:查询给定目标值是否在数组中,是search in rotated sorted array的扩展。
思路:因为是上一题的扩展,所以很正常的想到,上题的思路,在本题是否合适。结果发现不能强行的套上去。如:1,1,3,1,target=3,若是按照原来的解法,则应该是左边有序,然而不行;若是if条件判断中间等号,为右边有序,也显然不对。参考了Grandyang的博客才知道,只需在判断上加上判断中间值是否等于最右端值,若是,hi向左移动一个,直到不相等。这样就可以继续保持上题的解法了,具体代码如下:
1 class Solution { 2 public: 3 bool search(int A[], int n, int target) 4 { 5 if(n==0) return false; 6 int lo=0,hi=n-1; 7 while(lo<=hi) 8 { 9 int mid=(lo+hi)/2; 10 if(A[mid]==target) 11 return true; 12 else if(A[mid]<A[hi]) 13 { 14 if(A[mid]<target&&A[hi]>=target) 15 lo=mid+1; 16 else 17 hi=mid-1; 18 } 19 else if(A[mid]>A[hi]) 20 { 21 if(A[lo]<=target&&A[mid]>target) 22 hi=mid-1; 23 else 24 lo=mid+1; 25 } 26 else //重点理解 27 hi--; 28 } 29 return false; 30 } 31 };
相关文章推荐
- [LeetCode] 81. Search in Rotated Sorted Array II 在旋转有序数组中搜索 II
- leetcode 7. 在有序可重复数组旋转后搜索 Search in Rotated Sorted Array II
- [LeetCode] Search in Rotated Sorted Array II 在旋转有序数组中搜索之二
- [Leetcode] search in rotated sorted array 搜索旋转有序数组
- [LeetCode] 33. Search in Rotated Sorted Array 在旋转有序数组中搜索
- LeetCode 81. Search in Rotated Sorted Array II(搜索旋转的数组)
- [LeetCode] Search in Rotated Sorted Array 在旋转有序数组中搜索
- leetCode 81.Search in Rotated Sorted Array II (旋转数组的搜索II) 解题思路和方法
- leetcode 6. 在有序数组旋转后搜索 Search in Rotated Sorted Array
- LeetCode 81. Search in Rotated Sorted Array II(在旋转有序序列中搜索之二)
- LeetCode-Search in Rotated Sorted Array II-在旋转数组中搜索-二分查找
- 【LeetCode-面试算法经典-Java实现】【081-Search in Rotated Sorted Array II(搜索旋转的排序数组)】
- LeetCode @ Search in Rotated Sorted ArrayII 旋转数组查找II
- LeetCode 81 Search in Rotated Sorted Array II(循环有序数组中的查找问题)
- leetcode 刷题之路 35 Search in Rotated Sorted Array II (旋转排序数组查找终极版)
- LeetCode Search in Rotated Sorted Array II -- 有重复的旋转序列搜索
- LeetCode 33 Search in Rotated Sorted Array(在旋转排序数组中搜索)(*)
- leetcode 题解:Search in Rotated Sorted Array II (旋转已排序数组查找2)
- lintcode 中等题:search in rotated sorted arrayII 搜索旋转排序数组II
- [LeetCode] Find Minimum in Rotated Sorted Array II 寻找旋转有序数组的最小值之二