LeetCode-Search in Rotated Sorted Array II-在旋转数组中搜索-二分查找
2014-10-20 18:52
786 查看
https://oj.leetcode.com/problems/search-in-rotated-sorted-array-ii/
当允许相等时,就要考虑各种边界条件。我的策略是把每个>,<,=都分类讨论,这样比较复杂,但是逻辑比较清晰。
另当A[l]=A[r]时,需要线性搜索一个不等于A[l]的位置收缩l指针。
当允许相等时,就要考虑各种边界条件。我的策略是把每个>,<,=都分类讨论,这样比较复杂,但是逻辑比较清晰。
另当A[l]=A[r]时,需要线性搜索一个不等于A[l]的位置收缩l指针。
class Solution { public: bool search(int A[], int n, int target) { int l=0; int r=n-1; int x=target; while(r>l){ int mid=(l+r)/2; if (x==A[mid]) return true; if (A[l]<A[r]) { if (x<A[mid]) r=mid; else l=mid+1; } else if(A[l]>A[r]){ //Al>Ar if (A[mid]<A[r]) { if (x<A[mid]) r=mid; else {//x > mid if (x>A[r]) r=mid; else l=mid+1; } } else if(A[mid]>A[r]){ if (x>A[mid]) l=mid+1; else { if (x>A[r]) r=mid; else l=mid+1; } } else { //A[mid]==A[r] if (A[mid]>A[l]) { if (x<A[mid]){ if(x>A[r]) r=mid; else l=mid+1; } else l=mid+1; } else r=mid; } } else { //A[l]==A[r] bool eq=true; for(int i=l;i<=r;i++) { if(A[i]!=A[l]) { eq=false; l=i; break; } } if(eq) return false; } } if (A[l]==x) return true; return false; } };
相关文章推荐
- leetcode 81. Search in Rotated Sorted Array II-旋转数组|二分查找
- leetcode 81. Search in Rotated Sorted Array II 旋转数组查找+二分查找
- [LeetCode] Search in Rotated Sorted Array II 在旋转有序数组中搜索之二
- [LeetCode] 81. Search in Rotated Sorted Array II 在旋转有序数组中搜索 II
- LeetCode-Find Minimum in Rotated Sorted Array II-旋转排序数组找最小-二分查找
- leetcode 题解:Search in Rotated Sorted Array II (旋转已排序数组查找2)
- Search in Rotated Sorted Array II 旋转数组二分查找 有重复
- leetCode 81.Search in Rotated Sorted Array II (旋转数组的搜索II) 解题思路和方法
- LeetCode 81. Search in Rotated Sorted Array II(搜索旋转的数组)
- LeetCode-Search in Rotated Sorted Array-旋转数组中的搜索-二分搜索+代数逻辑
- LeetCode @ Search in Rotated Sorted ArrayII 旋转数组查找II
- leetcode 刷题之路 35 Search in Rotated Sorted Array II (旋转排序数组查找终极版)
- 【LeetCode-面试算法经典-Java实现】【081-Search in Rotated Sorted Array II(搜索旋转的排序数组)】
- [Leetcode] search in rotated sorted array ii 搜索旋转有序数组
- leetcode 7. 在有序可重复数组旋转后搜索 Search in Rotated Sorted Array II
- LeetCode | Search in Rotated Sorted Array(在旋转数组中查找)
- 【LeetCode刷题】旋转数组的查找 Search in Rotated Sorted Array
- lintcode 中等题:search in rotated sorted arrayII 搜索旋转排序数组II
- LeetCode 33. Search in Rotated Sorted Array(旋转数组搜索)
- [LeetCode] Search in Rotated Sorted Array II 二分搜索