LeetCode--长度最小的子数组

题目:

解析:

我们可以用滑动窗口的思想,通过一个动态的j表示结束位置,一个动态的i表示起始位置,假设满足初始条件的数组大小result为无穷大,通过j先遍历数组并求和,用一个sum存储元素的和,当sum的值大于等于target的值时,说明该区间是符合条件的区间,这时候通过i的右移(i++)看是否这个区间的能否更小(i右移的过程中sum要减去i下标所对应的值),区间的长度subl=j-i+1,用它和result进行比较选最小值为新数组的长度(如果不存在满足条件的数组,最后一定要把result的值改为0);

代码:

java 复制代码
class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int i = 0,sum = 0;
        int result = Integer.MAX_VALUE;
        for(int j = 0;j <= nums.length-1; j++){ 
            sum += nums[j];
            while(sum >= target){
                int subl = j - i + 1;
                result =Math.min(result,subl);
                sum -= nums[i];
                i++;
            }
        }
        return result == Integer.MAX_VALUE ? 0 : result;
    }
}
相关推荐
摸鱼仙人~2 分钟前
算法题避坑指南:数组/循环范围的 `+1` 到底什么时候加?
算法
liliangcsdn7 分钟前
基于似然比的显著图可解释性方法的探索
人工智能·算法·机器学习
骇城迷影10 分钟前
代码随想录:二叉树篇(中)
数据结构·c++·算法·leetcode
期末考复习中,蓝桥杯都没时间学了24 分钟前
力扣刷题23
算法·leetcode·职场和发展
菜鸡儿齐26 分钟前
leetcode-子集
算法·leetcode·深度优先
今儿敲了吗29 分钟前
28| A-B数对
数据结构·c++·笔记·学习·算法
Desirediscipline31 分钟前
#include<limits>#include <string>#include <sstream>#include <iomanip>
java·开发语言·前端·javascript·算法
Felven39 分钟前
B. Luntik and Subsequences
算法
菜鸡儿齐42 分钟前
leetcode-括号生成
算法·leetcode·职场和发展
fs哆哆1 小时前
在VB.NET中,随机打乱列表顺序的算法与方法
算法·.net