[LeetCode] Search in Rotated Sorted Array II
2012-11-25 14:40
429 查看
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.
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.
class Solution { public: int findPos(int a[], int left, int right) { if (left > right) return -1; int mid = left + (right - left) / 2; if (a[left] < a[mid]) { int pos = findPos(a, mid + 1, right); if (pos == -1) return left; else return a[pos] <= a[left] ? pos : left; } else if (a[left] > a[mid]) { int pos = findPos(a, left, mid - 1); if (pos == -1) return mid; else return a[pos] < a[mid] ? pos : mid; } else { int pos1 = findPos(a, left, mid - 1); int pos2 = findPos(a, mid + 1, right); if (pos1 == -1 && pos2 == -1) return mid; else if (pos1 == -1) return a[mid] < a[pos2] ? mid : pos2; else if (pos2 == -1) return a[mid] <= a[pos1] ? mid : pos1; else { if (a[pos1] < a[pos2]) return a[mid] <= a[pos1] ? mid : pos1; else return a[mid] < a[pos2] ? mid : pos2; } } } bool bsearch(int a[], int left, int right, int key) { if (left > right) return false; int mid = left + (right - left) / 2; if (a[mid] == key) return true; else if (a[mid] < key) return bsearch(a, mid + 1, right, key); else return bsearch(a, left, mid - 1, key); } bool search(int A[], int n, int target) { // Start typing your C/C++ solution below // DO NOT write int main() function int pos = findPos(A, 0, n - 1); return bsearch(A, 0, pos - 1, target) || bsearch(A, pos, n - 1, target); } };
相关文章推荐
- LeetCode--Search in Rotated Sorted Array II
- [LeetCode]Search in Rotated Sorted Array II
- [leetcode]Search in Rotated Sorted Array II @ Python
- leetcode_81——Search in Rotated Sorted Array II(二分查找)
- [LeetCode] Search in Rotated Sorted Array II 解题报告
- 解题报告:LeetCode Search in Rotated Sorted Array II(循环数字查找)
- LeetCode 81. Search in Rotated Sorted Array II
- LeetCode - Search in Rotated Sorted Array II
- leetcode - Search in Rotated Sorted Array II
- LeetCode 81. Search in Rotated Sorted Array II
- Java for LeetCode 081 Search in Rotated Sorted Array II
- leetcode:Search in Rotated Sorted Array II
- leetcode 081 Search in Rotated Sorted Array II
- Leetcode 81. Search in Rotated Sorted Array II (Medium) (cpp)
- LeetCode——Search in Rotated Sorted Array II
- Search in Rotated Sorted Array II -- LeetCode
- leetcode解题报告(4):Search in Rotated Sorted ArrayII
- 【LeetCode】C# 81、Search in Rotated Sorted Array II
- LeetCode: Search in Rotated Sorted Array II
- [leetcode] Search in Rotated Sorted Array II