class Solution {
public int search(int[] nums, int target) {
if(nums == null || nums.length == 0) {
return -1;
}
int l = 0;
int r = nums.length - 1;
while(l <= r) {
int mid = (l + r) / 2;
if(nums[mid] == target) {
return mid;
}
if(nums[mid] < nums[r]) {
//右边有序 且在有序的范围内
if(nums[mid] < target && target <= nums[r]) {
l = mid + 1;
}else {
//不在这个范围
r = mid - 1;
}
}else{
//左边有序 且在右边的范围
if(nums[l] <= target && target < nums[mid]) {
r = mid - 1;
}else {
//不在右边范围
l = mid + 1;
}
}
}
return -1;
}
}
//采用夹逼的方法一步步减小查询的范围