力扣:209.长度最小的子数组

1.题目分析:

给定一个含有 n个正整数的数组和一个正整数 target

找出该数组中满足其总和大于等于target的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度**。** 如果不存在符合条件的子数组,返回 0

示例 1:

复制代码
输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 
[4,3]
 是该条件下的长度最小的子数组。

1.找出连续子数组

2.最短长度

3.特殊情况:数组总和小于target,返回零

2.算法分析:

方法一:暴力枚举:时间复杂度是O(n^3)

设置两个指针,分别表示子数组的开始和子数组的结束两层for循环,最后求子数组总和一个while,自己在脑子想想,跑不过,我就不画图,写代码了哈。

方法二:在暴力枚举的方法上做出改进-->滑动窗口,还是用了双指针,和单调性,全是正数会越加越大,让两个指针同向移动来实现优化

滑动窗口步骤:1.进入窗口

2.判断窗口

3.退出窗口

例一图示(target = 7, nums = [2,3,1,2,4,3]):

3.代码编写:

java 复制代码
public static int minSubArrayLen(int target, int[] nums) {
        int sum=0;
        int count=Integer.MAX_VALUE;
        int left=0;
        int right=0;
        for(left=0,right=0;right<nums.length;right++)
        {
            sum+=nums[right];//进窗口
            while (sum>=target)//判断
            {
                count=Math.min(count,right-left+1);
                sum-=nums[left++];//出窗口
            }

        }
        if(count==Integer.MAX_VALUE)
        {
            return 0;
        }

        return count;
    }
相关推荐
小阳拱白菜10 分钟前
蓝桥杯刷题--挖矿
算法·职场和发展·蓝桥杯
补三补四11 分钟前
【深度学习基础】——机器的神经元:感知机
人工智能·深度学习·算法·机器学习
ZHW_AI课题组22 分钟前
基于线性回归模型的汽车燃油效率预测
算法·汽车·线性回归
烁34728 分钟前
每日一题(小白)暴力娱乐篇29
java·数据结构·算法·娱乐
梭七y34 分钟前
【力扣hot100题】(080)爬楼梯
算法·leetcode·职场和发展
Ludicrouers38 分钟前
【Leetcode-Hot100】移动零
算法·leetcode·职场和发展
rigidwill66642 分钟前
LeetCode hot 100—最长回文子串
数据结构·c++·算法·leetcode·职场和发展
小林熬夜学编程43 分钟前
【高阶数据结构】第二弹---图的深度解析:从基本概念到邻接矩阵的存储与操作
c语言·数据结构·c++·算法·深度优先·图论
xlcoding2 小时前
位掩码、哈希表、异或运算、杨辉三角、素数查找、前缀和
c++·算法·蓝桥杯
小开不是小可爱3 小时前
leetcode_383. 赎金信_java
java·数据结构·算法·leetcode