美文网首页
二分查找(四)——旋转后带重复的二分查找

二分查找(四)——旋转后带重复的二分查找

作者: 旺叔叔 | 来源:发表于2018-09-24 16:13 被阅读0次

LeetCode_81_SearchinRotatedSortedArrayII

题目分析:

和上题不同的是有重复就无法简单通过当前值和开头结尾的比较来确定单调区间了。
所以如果是和左边比较 那么相等就begin++ 
同理 也可以是和右边比较 相等则就end--

解法:

public static boolean search(int[] nums, int target) {
    int begin = 0, end = nums.length - 1;
    while (begin <= end) {
        int mid = begin + (end - begin) / 2;
        if (nums[mid] == target) return true;
        if (nums[begin] < nums[mid]) {//左单调
            if (nums[begin] <= target && nums[mid] >= target)
                end = mid - 1;
            else begin = mid + 1;
        }
        else if(nums[begin] > nums[mid]){//右单调
            if (nums[mid] <= target && nums[end] >= target)
                begin = mid + 1;
            else end = mid - 1;
        }else
            begin++;
    }
    return false;
}

相关文章

  • 二分查找(四)——旋转后带重复的二分查找

    LeetCode_81_SearchinRotatedSortedArrayII 题目分析: 解法:

  • 可查找重复元素的二分查找算法

    可查找重复元素的二分查找算法 二分查找算法思想:又称为 折半查找,二分查找适合对已经排序好的数据集合进行查找。假设...

  • Android查询算法

    一、获取最小值 二、递归数兔子 三、查找文件 四、二分查找(1)使用递归 (2)二分查找 五、字符串旋转

  • 数据结构和算法--二分查找

    二分查找 二分查找的思想 二分查找(Binary Search)算法,也叫折半查找算法。 二分查找针对的是一个有序...

  • python二分查找算法

    文章概述 二分查找法介绍 简单查找与二分查找对比 二分查找  二分查找算法主要思想:在有序列表中查找指定元素,先从...

  • 二分查找总结

    二分查找是在每次匹配后,将查找的空间一分为二的算法,二分查找应该是有序的数组进行查找. 二分查找模板 1. 模板一...

  • 二分查找

    [TOC] 二分查找的基础模板 二分查找靠左的Index基础模板 二分查找靠右的Index基础模板 二分查找插入t...

  • 二分查找

    什么是二分查找?二分查找,也叫折半查找(Binary Search),它是一种效率较高的查找方法。二分查找的条件:...

  • 二分查找(三)——旋转后的二分查找

    LeetCode_33_SearchinRotatedSortedArray 题目分析: 解法一:递归 解法二:循...

  • 一 最基本的算法

    1、快排(NlogN) 2、冒泡(n^2) 3、二分查找(logN) 3.1 旋转有序数组的二分查找 给定一个没有...

网友评论

      本文标题:二分查找(四)——旋转后带重复的二分查找

      本文链接:https://www.haomeiwen.com/subject/zaxhoftx.html