leetcode - Search in Rotated Sorted Array

来源:互联网 发布:iscroll.js中文官网 编辑:程序博客网 时间:2024/06/16 09:38

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.

//利用二分,但是,这里要特殊处理,将数组分成两部分二分。时间复杂度O(logn)class Solution {public:    int search(int A[], int n, int target) {        return dfs(A,0,n-1,target);    }private:int dfs(int A[], int bgn, int end, int target){if(bgn <= end){int mid = bgn + (end - bgn) / 2;if(A[mid] == target){return mid;}if(A[bgn] <= A[mid]){if(A[bgn] <= target && target < A[mid]){dfs(A,bgn,mid-1,target);}else{dfs(A,mid+1,end,target);}}else{if(A[mid] < target && target <= A[end]){dfs(A,mid+1,end,target);}else{dfs(A,bgn,mid-1,target);}}}else{return -1;}}};



0 0
原创粉丝点击