LeetCode Search in Rotated Sorted Array
来源:互联网 发布:淘宝规则培训 编辑:程序博客网 时间:2024/06/10 22:31
Suppose a sorted array is rotated at some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7
might become 4 5 6 7 0 1 2
).
You are given a target value to search. If found in the array return its index, otherwise return -1.
You may assume no duplicate exists in the array.
采用二分查找,注意区间的讨论 最大值与最小值的交界 在哪个区间(可以通过数组 中间值 与 两端值 做对比得出);注意边界条件。
class Solution {public:int search(int A[], int n, int target) {if (n <= 0)return -1;return find(A, 0, n - 1, target);}int find(int A[], int left, int right, int target) {if (right < left)return -1;if (left == right && A[left] != target)return -1;int mid = left + ((right - left) >> 1);if (A[mid] == target) {return mid;}else if (A[mid] > target) {if (A[mid] >= A[left]) { //注意 一定要带“=”,当只有两个元素时,mid == leftif (A[left] == target)return left;else if (A[left] < target)return find(A, left + 1, mid - 1, target);elsereturn find(A, mid + 1, right, target);}else if (A[mid] < A[right]) {return find(A, left, mid - 1, target);}}else {if (A[mid] >= A[left]) { //注意 同样要带“=”return find(A, mid + 1, right, target);} else if (A[mid] < A[right]) {if (A[right] > target)return find(A, mid + 1, right - 1, target);else if (A[right] == target)return right;else {return find(A, left, mid - 1, target);}}}}};
一个思路更清晰的方法:
class Solution {public:int search(int A[], int n, int target) {return find(A, 0, n - 1, target);}int find(int A[], int left, int right, int target) {if (right < left)return -1;int mid = left + ((right - left) >> 1);if (A[mid] == target)return mid;else if (A[left] < A[right])return A[mid] < target ? find(A, mid + 1, right, target) : find(A, left, mid - 1, target);else {int temp = find(A, left, mid - 1, target);if (temp != -1)return temp;else find(A, mid + 1, right, target);}}};
0 0
- [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
- [LeetCode]Search in Rotated Sorted Array
- Shodan搜索引擎介绍
- skynet
- MongoDB学习笔记之分片机制概述
- POJ 1577 Falling Leaves
- 流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls)
- LeetCode Search in Rotated Sorted Array
- ADT bundle+NDK配置
- 我又没对你说
- 高通watchdog
- android新手上路(三)--- 关于onConfigurationChange旋屏时没有触发
- 超酷的Prezi在线ppt制作网站
- 2014.8.4我出的模拟赛【NTR酋长】
- 数据结构:最小生成树--Prim算法
- 大妈上公交