209.滑动窗口,求最短连续子数组,和sum>=num



思想:
left,right指定一个数组长度



值小于s,就让right++,sum=sum+arr[right],扩大窗口,直到大于s,找到满足题意的,记录下来

值大于s,sum=sum-left,left++,缩小窗口,直到小于s,执行上一步。找到满足题意的,记录下来


class Solution {
    public int minSubArrayLen(int s, int[] nums) {
        //滑动窗口的思想
        //一开始窗口里面没有值的[left,right]闭空间
        int left=0,right=-1;
        int sum=0;
        int res=nums.length+1;
        while(left<nums.length){
            //如果小于s,right++,s=s+nums[right]
            if(right+1<nums.length&&sum<s){
                right++;
                sum=sum+nums[right];
            }
            else{
                sum=sum-nums[left];
                left++;
            }
            
            if(sum>=s)
                res=Math.min(res,right-left+1);
        }
        //表示没找到
        if(res==nums.length+1)
            return 0;
        return res;
            
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容