Code:
class Solution {
public int search(int[] nums, int target) {
int l = 0;
int r = nums.length -1;
int mid;
while (l + 1 < r) {
mid = l + (r - l) / 2;
if (nums[mid] == target) {
return mid;
}
if (nums[mid] > nums[l]) {
//上半段 是递增的
if ((target >= nums[l]) && (target <= nums[mid])) {
//说明再前半段
r = mid;
} else {
//再后半段
l = mid;
}
} else {
//下半段
if ((target <= nums[r]) && (target >= nums[mid])) {
l = mid;
} else {
r = mid;
}
}
}
//判断下边界
if (nums[l] == target) {
return l;
}
if (nums[r] == target) {
return r;
}
return -1;
}
}