class Solution {
public:
int search(int A[], int n, int target) {
int pivot = 0;
for(int i = 0; i < n - 1 ; ++i) {
if(A[i] > A[i + 1]) {
pivot = i;
break;
}
}
int start = 0;
int end = n - 1;
if(target >= A[0] && target <= A[pivot]) {
start = 0;
end = pivot;
} else if(target >= A[pivot + 1] && target <= A[n - 1]) {
start = pivot + 1;
end = n - 1;
}
while(start <= end) {
int middle = (start + end) / 2;
if(A[middle] == target) {
return middle;
} else if(A[middle] > target) {
end = middle - 1;
} else {
start = middle + 1;
}
}
return -1;
}
};
4/12/2014
Leetcode -- Search in Rotated Sorted Array
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment