Skip to content

[LeetCode 209] 长度最小的子数组

中等已解决Aug 13, 2025(16天前) 时间 O(n) 空间 O(1) 原题链接

🎯 请点击上方原题链接,查看题目描述👆

💭 解题思路#

滑动窗口,思路如下:

  1. 定义两个指针,分别代表左右窗口
  2. 右指针往后走一次,sum就加上和。
  3. 如果 sum >= target的话,就收缩窗口 n 次(这里要用到循环)目的是收缩成满足条件的最小窗口,然后再往后走

💻 代码实现#

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