需要消除重复的元素,跳过
while(nums[start]==nums[mid]){
start++;
}
完整代码
class Solution {
public boolean search(int[] nums, int target) {
//check errors
if(nums==null||nums.length==0){
return false;
}
int start=0,end=nums.length-1;
while(start+1<end){
int mid=start+(end-start)/2;
if (nums[mid]==target){
return true;
}
if (nums[start]<nums[mid]){
if (nums[start]<=target&&nums[mid]>=target){
end=mid;
}
else{
start=mid;
}
}
else if (nums[mid] < nums[start]){
if(nums[end]>=target&&nums[mid]<=target){
start=mid;
}
else{
end=mid;
}
}
else{
start++;// have no idea about the array, but we can exclude nums[start] because nums[start] == nums[mid]
}
}
if (nums[start]==target){
return true;
}
if (nums[end]==target){
return true;
}
else{
return false;
}
}
}