LeetCode题目-209

首页 编程分享 LEET_CODE 正文

leetCode 转载 编程分享 2024-01-14 02:30:23

简介 LeetCode题目-209


✏Leetcode基础刷题之(209. Minimum Size Subarray Sum)


✏描述

给定一个n长度的整形数组n以及一个确定的值s。找出总和大于等于s的连续子数组最小长度。如果没有(即总和加起来还没给定值大),直接返回0


✏题目实例

✏题目分析

首先我们肯定需要定义一个变量用来存储最后的值,先给定int的最大值。我们还需要定义一个变量用来存储左端点的位置。不断缩小满足条件的连续子数组的长度,可能听起来很模糊,举个例子。


nums=[2,1,1,5,4,3]  s=5  
从0开始遍历(i=0) 求满足条件sum>=5的最小子数组长度
在2+1+1的时候sum<=5  不满足条件  此时i=2
当i=3时,sum(9)>=5  得出length=4 此时当然不是最小的连续子数组
所以此时向右移动一位 并把总和减去当前的值 $num -=$nums[$left] 
此时 $num=7>=5 继续移动.....直到移动。。直到发现5的位置一个子数组就满足条件


     
    class Solution {

    /**
     * @param Integer $s
     * @param Integer[] $nums
     * @return Integer
     */
    function minSubArrayLen($s, $nums) {
        $res=PHP_INT_MAX;
        $left=0;
        
        for($i=0;$i < count($nums);$i++){
            $sum +=$nums[$i];
            while($sum>=$s){
                $res=min($res,$i+1-$left);
                $sum -=$nums[$left++];
            }
        }
        return $res !=PHP_INT_MAX?$res:0;
    }
}



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


Tags:


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


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


      最新评论




ABOUT ME

Blogger:袅袅牧童 | Arkin

Ido:PHP攻城狮

WeChat:nnmutong

Email:nnmutong@icloud.com

标签云