LeetCode题目-154

首页 编程分享 LEET_CODE 正文

leetCode 转载 编程分享 2019-02-03 14:13:56

简介 LeetCode题目-154


✏Leetcode基础刷题之(154. Find Minimum in Rotated Sorted Array II)


✏描述

给定一个不知道在哪个点发生旋转的有序升序数组,求数组中最小值。这题和上一题最大的区别就是有重复值。


✏题目实例

✏题目分析

还是需要通过中间点查找,不同的是每次二分查找如果等于中间数,那么直接把左边的向右边的移动一位,大于或者小于的情况,我们都可以求出这局部的最小值,然后缩小分区,最后进行求左中右三部分的最小值即整体最小值。

    /**
     * @param Integer[] $nums
     * @return Integer
     */
    function findMin($nums) {
        $l=0;
        $r=count($nums)-1;
        $res=$nums[0];
        while($l<$r-1){
            $middle=$l+(($r-$l)>>1);
            if($nums[$l]<$nums[$middle]){
                $res=min($nums[$l],$res);
                $l=$middle+1;
            }elseif($nums[$l]>$nums[$middle]){
                $res=min($res,$nums[$r]);
                $r=$middle;
            }else ++$l;
        }
        $res=min($res,$nums[$l],$nums[$r]);
        return $res;
    }


转载链接:https://leetcode.cn/


Tags:


本篇评论 —— 揽流光,涤眉霜,清露烈酒一口话苍茫。


    声明:参照站内规则,不文明言论将会删除,谢谢合作。


      最新评论




ABOUT ME

Blogger:袅袅牧童 | Arkin

Ido:PHP攻城狮

WeChat:nnmutong

Email:nnmutong@icloud.com

标签云