【leetcode】Search in Rotated Sorted Array II(middle)☆
2015-03-20 17:53
441 查看
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.
我的思路:
太混乱了 不提了。注意关键区分依据 排好序的一定是从小到大的
看大神的吧:
我的代码,把三个数字都相等的情况单独处理,其他就用无重复处理。 其实我的代码看起来长一些,但是在处理1111111111115这种情况时我的方法优势还是有的
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.
我的思路:
太混乱了 不提了。注意关键区分依据 排好序的一定是从小到大的
看大神的吧:
bool search(int A[], int n, int key) { int l = 0, r = n - 1; while (l <= r) { int m = l + (r - l)/2; if (A[m] == key) return true; //return m in Search in Rotated Array I if (A[l] < A[m]) { //left half is sorted 排好序的部分一定是从小到大的 if (A[l] <= key && key < A[m]) //在排好序的这部分 r = m - 1; else l = m + 1; } else if (A[l] > A[m]) { //right half is sorted if (A[m] < key && key <= A[r]) l = m + 1; else r = m - 1; } else l++; //A[l] == A[m] 把l增大1个再循环 } return false; }
我的代码,把三个数字都相等的情况单独处理,其他就用无重复处理。 其实我的代码看起来长一些,但是在处理1111111111115这种情况时我的方法优势还是有的
bool search(int A[], int n, int target) { int l = 0, r = n - 1; while(l <= r) { int m = (l + r) / 2; if(target == A[m]) return true; else if(A[l] == A[m] && A[m] == A[r]) //三个值相等 { bool isequalleft = true; for(int i = l; i < m; i++) { if(A[i] != A[i + 1]) { isequalleft = false; break; } } if(isequalleft) //去掉重复的那一半 l = m + 1; else r = m - 1; } else //与不重复的方法相同 { if (A[l] <= A[m]) { if (target >= A[l] && target < A[m]) { r = m - 1; } else { l = m + 1; } } else { if (target > A[m] && target <= A[r]) { l = m + 1; } else { r = m - 1; } } } } return false; }
相关文章推荐
- leetcode_middle_86_81. Search in Rotated Sorted Array II
- [LeetCode] Search in Rotated Sorted Array II
- [Leetcode] Search in Rotated Sorted Array II
- [LeetCode]Search in Rotated Sorted Array II
- [leetcode] Search in Rotated Sorted Array II
- Search in Rotated Sorted Array II [LeetCode]
- [LeetCode] Search in Rotated Sorted Array II
- [leetcode]Search in Rotated Sorted Array II
- leetcode Search in Rotated Sorted Array II
- LeetCode Online Judge 题目C# 练习 - Search in Rotated Sorted Array II
- [leetcode刷题系列]Search in Rotated Sorted Array II
- leetcode 98: Search in Rotated Sorted Array II
- leetcode -- Search in Rotated Sorted Array II
- leetcode_Search in Rotated Sorted Array II
- LeetCode-Search in Rotated Sorted Array II
- LeetCode : Search in Rotated Sorted Array II
- LeetCode: Search in Rotated Sorted Array II
- leetcode - Search in Rotated Sorted Array II
- [LeetCode] Search in Rotated Sorted Array II
- 【leetcode】Search in Rotated Sorted Array II