01数组:209、长度最小的子数组

本文介绍了在给定整数数组中,使用暴力法和双指针法求解长度最小的子数组,使其和等于目标值的算法过程,特别强调了滑动窗口的概念和操作。
摘要由CSDN通过智能技术生成

209、长度最小的子数组


重点:滑动窗口小了移动j,大了while循环i

    1. 暴力破解法:两层for循环,ij之间符合要求的值,找到最小数组
    1. 滑动窗口:i起始,j终止;循环查找,找到后移动i++;所有值都定义到外面

方法一:暴力法

方法二:双指针法

        public int minSubArrayLen(int target, int[] nums) {
            int res = Integer.MAX_VALUE;            //滑动窗口最小值
            int i = 0;                              //起始位置
            int sum = 0;                            //滑动窗口的和
            int length = 0;                         //滑动窗口的长度
            for (int j = 0; j < nums.length; j++) {  //   终止位置
                sum += nums[j];
                while (sum >= target) {  //如果符合条件了,算出长度,比较结果,最后i++,直到不符合条件,移动j
                    length = j - i + 1;
                    res = Math.min(res, length);
                    sum -= nums[i];  //先减了,再改变i指针
                    i++;
                }
            }
            return res == Integer.MAX_VALUE ? 0 : res;

        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值