题目链接:search-in-rotated-sorted-array
/**
*
* 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.
*
*/
public class SearchInRotatedSortedArray {
// 194 / 194 test cases passed.
// Status: Accepted
// Runtime: 212 ms
// Submitted: 0 minutes ago
public int search(int[] A, int target) {
if(A.length == 0) return -1;
int low = 0; int high = A.length;
while(low != high) {
int mid = low + (high - low) / 2;
if(A[mid] == target) return mid;
if(A[low] <= A[mid]) {
if(A[low] <= target && target < A[mid]) high = mid;
else low = mid + 1;
} else {
if(target <= A[high - 1] && A[mid] < target) low = mid + 1;
else high = mid;
}
}
return -1;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}