//对应leetcode的,面试题 10.03. 搜索旋转数组,解析见leetcode
public class Solution {
public int search(int[] arr, int target) {
int n = arr.length;
int result = -1;
int l = 0, r = n - 1;
while(l <= r){
int mid = (l + r + 1) >> 1;
if(arr[l] == target) return l;
else if(arr[l] == arr[mid]) l++;
else if(arr[l] < arr[mid]){
if(arr[l] > target || arr[mid] < target) l = mid;
else{
l = l + 1;
r = mid;
}
}else{
if(arr[l] > target && arr[mid] < target) l = mid;
else{
l = l + 1;
r = mid;
}
}
}
return result;
}
}