代码:
和33很像 二分查找
class Solution {
public boolean search(int[] nums, int target) {
int idx = 0;
int n = nums.length;
for(int i=1;i<n;i++){
if(nums[i]<nums[i-1]){
idx = i;//idx:后半部分的第一个
break;
}
}
if(n==1){
if(nums[0]==target)return true;
else return false;
}
int l,r;
if(idx==0){
l=0;
r=n-1;
}else if(target>=nums[0]){
l=0;
r=idx-1;
}else{
l=idx;
r=n-1;
}
while(l<=r){
int m = (l+r)/2;
if(target==nums[m]){
return true;
}else if(target<nums[m]){
r = m-1;
}else{
l = m+1;
}
}
return false;
}
}