长度最小的子数组

题目解析:给定一个正整数数组和一个目标值,找出和大于等于目标值的连续区间的最小长度。如果不存在则返回 0。 算法原理:
- 暴力解法:双重 for 循环遍历所有情况,当满足条件时更新结果。由于是正整数数组,一旦区间和超过目标值,继续扩大区间只会增加长度,因此可以优化。
- 滑动窗口(同向双指针):使用 left 和 right 两个指针向同一方向移动且不回退。right 负责将元素加入 sum,当 sum >= target 时更新最小长度,然后移动 left 缩小窗口直到 sum < target。




class Solution {
public int minSubArrayLen(int target, int[] nums) {
int sum = 0;
int len = Integer.MAX_VALUE;
nums.length;
( , right = ; right < n; right++) {
sum += nums[right];
(sum >= target) {
len = Math.min(len, right - left + );
sum -= nums[left++];
}
}
len == Integer.MAX_VALUE ? : len;
}
}

























