LeetCode 32. Search in Rotated Sorted Array
来源:互联网 发布:windows搜索功能不能用 编辑:程序博客网 时间:2024/06/07 08:07
注意这里数组是不含重复数字的。
考虑数组任意的一次向右滚动(一个单位),最后两个元素A[n-1], A[n-2].
若A[n-1]事实上为最初的A[0], 那么这次滚动后,数组将回到最初的状态,A[0'] < a[(n-1)'], 成为升序数组,二分搜索即可;
若A[n-1]并非最初的A[0], 那么必有A[n-2] <= A[n-1], 滚动后,A[n-1]变成A[0], A[0'] >= A[(n-1)'], 此时应当将数组分成两半,二分递归。
1) 若num[0] < num[n-1], 那么整个数组为升序;
2) 反之,必有一点k, 使得num[0, 1, ..., k]为升序,num[k+1, k+2, ..., n-1]为升序。此时以(left+right)/2为中点,把数组分成两部分,继续递归求解。
代码:
class Solution {public: int search(int A[], int n, int target) { return find(A, 0, n-1, target); }private:int find(int a[], int l, int r, int target){if (l > r){return -1;}int index = -1, mid = (l+r)>>1;if (a[l] <= a[r]){while (l <= r){mid = (l+r) >> 1;if (a[mid] == target){index = mid;break;} else if (a[mid] < target){l = mid + 1;} else{r = mid - 1;}}} else{index = find(a, l, mid, target);index = index!=-1? index: find(a, mid+1, r, target);}return index;}};
0 0
- LeetCode 32. Search in Rotated Sorted Array
- [leetcode][search] Search in Rotated Sorted Array
- LeetCode: Search in Rotated Sorted Array
- LeetCode: Search in Rotated Sorted Array II
- LeetCode Search in Rotated Sorted Array
- LeetCode Search in Rotated Sorted Array II
- [Leetcode] Search in Rotated Sorted Array
- LeetCode : Search in Rotated Sorted Array
- LeetCode : Search in Rotated Sorted Array II
- [LeetCode] Search in Rotated Sorted Array II
- [LeetCode] Search in Rotated Sorted Array
- [Leetcode] Search in a Rotated Sorted Array
- [Leetcode] Search in Rotated Sorted Array II
- leetcode 97: Search in Rotated Sorted Array
- [LeetCode] Search in Rotated Sorted Array
- [leetcode] Search in Rotated Sorted Array
- [leetcode] Search in Rotated Sorted Array II
- Leetcode Search in Rotated Sorted Array
- 图像显示特效工程GraphShow构建(一)
- 线段树专题
- 动态库路径配置- /etc/ld.so.conf文件
- 线程辅助类
- 解决问题:mac的vim无法访问clipboard
- LeetCode 32. Search in Rotated Sorted Array
- Learn To Hide Files Behind The Images
- Making Nameless Folder In Windows
- LeetCode 33. Search for a Range
- Effective C++读书笔记 (1)
- Effective C++读书笔记 (2)
- Watch 18+ Videos On Youtube Without Signing In 12:30 Posted by Nakib Momin Labels: INTERESTING TRIC
- python PIL, 错误:IndexError: string index out of range
- Simple Trick To Use Web Browsers As Text Editor