class Solution {
public boolean search(int[] nums, int target) {
if(nums==null||nums.length==0)
return false;
return search(nums,0,nums.length-1,target);
}
private boolean search(int[] nums,int left,int right,int target){
if(left>right)
return false;
int mid=left+(right-left)/2;
if(nums[mid]==target)
return true;
if(nums[left]<nums[mid]){
if(target>=nums[left]&&target<nums[mid])
return search(nums,left,mid-1,target);
else{
return search(nums,mid+1,right,target);
}
}else if(nums[left]>nums[mid]){
if(nums[mid]<target&&nums[right]>=target){
return search(nums,mid+1,right,target);
}else{
return search(nums,left,mid-1,target);
}
}
else { //left和mid相等的情况下,分不清哪边是递增的情况,这也是和前面那道题不一样的情况
return search(nums,left,mid-1,target)||search(nums,mid+1,right,target);
}
}
}
LeetCode No.81搜索旋转排序数组II
最新推荐文章于 2021-04-11 12:49:34 发布