力扣: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;
    }
相关推荐
指尖下的技术13 分钟前
Mysql面试题----为什么B+树比B树更适合实现数据库索引
数据结构·数据库·b树·mysql
ExRoc1 小时前
蓝桥杯真题 - 填充 - 题解
c++·算法·蓝桥杯
利刃大大1 小时前
【二叉树的深搜】二叉树剪枝
c++·算法·dfs·剪枝
Bunury3 小时前
组件封装-List
javascript·数据结构·list
Joeysoda3 小时前
Java数据结构 (从0构建链表(LinkedList))
java·linux·开发语言·数据结构·windows·链表·1024程序员节
天乐敲代码3 小时前
JAVASE入门九脚-集合框架ArrayList,LinkedList,HashSet,TreeSet,迭代
java·开发语言·算法
比特在路上3 小时前
ListOJ14:环形链表II(寻找环的入口点)
数据结构·链表
十年一梦实验室3 小时前
【Eigen教程】矩阵、数组和向量类(二)
线性代数·算法·矩阵
Kent_J_Truman4 小时前
【子矩阵——优先队列】
算法
快手技术5 小时前
KwaiCoder-23BA4-v1:以 1/30 的成本训练全尺寸 SOTA 代码续写大模型
算法·机器学习·开源