记录旋转数组中查找特定的值(有重复)

思路:在无重复的基础上加一个条件

 if(nums[mid]==nums[left]){

    left++;

     continue;

}

当 nums[mid] == nums[left] 时,让 left++,并退出本次循环,其余部分完全相同

class Solution {
    public boolean search(int[] nums, int target) {
   int left=0;
   int right=nums.length-1;

   while(left<=right){
       int mid=left+((right-left)>>1);
       if(target==nums[mid]){
           return true;
       }
//多一个条件,就是去掉多余的重复数字
if(nums[mid]==nums[left]){
left++;
continue;
}
if(nums[mid]>nums[left]){//大情况一:mid在数组一
//小情况一:t在mid和left之间
    if(nums[mid]>target&&target>=nums[left]){
        right=mid-1;

        //小情况二:t在mid和right之间
    }else if(nums[left]>target||target>nums[mid]){
        left=mid+1;
    }

    //大情况二:mid在数组二中
}else if(nums[mid]<nums[left]){

//小情况一:t在mid和left之间
if(target>nums[right]||target<nums[mid]){
    right=mid-1;


//小情况二:t在mid和right之间
}else if(target>nums[mid]&&target<nums[right]){
    left=mid+1;


}
}

   }
return false;
    }
}

注意!此信息未认证,请谨慎判断信息的真实性!

全部评论
空

相关内容推荐

头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像 头像
点赞 评论 收藏
转发
头像
2022-12-22 18:27
天津大学_2023
点赞 评论 收藏
转发
头像 头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
2022-12-22 14:03
南京大学_2022
点赞 评论 收藏
转发
点赞 收藏 评论
分享

全站热榜

正在热议