public class Leetcode33 {
public static void main(String[] args) {
int [] nums = new int[]{4,5,6,7,0,1,2};
int target = 3;
System.out.println(new Leetcode33().search(nums,target));
}
public int search(int[] nums, int target) {
int i=0;
int j=nums.length-1;
int a=-1;
if(nums[i]>nums[j]){
int maxIndex=i;
while(i<=j){
int m=(i+j)>>>1;
if(nums[m]>nums[i]){
maxIndex=m;
i=m;
}else if(nums[m]<nums[j]){
j=m;
}else{
j--;
}
}
if(target>=nums[0]){
a=fun(nums,0,maxIndex,target);
}else{
a=fun(nums,maxIndex+1,nums.length-1,target);
}
}else {
a= fun(nums,i,j,target);
}
return a;
}
public int fun(int[] nums,int i,int j, int target) {
while(i<=j){
int m=(i+j)>>>1;
if(nums[m]>target){
j=m-1;
}else if(nums[m]<target){
i=m+1;
}else {
return m;
}
}
return -1;
}
}