🎯 请点击上方原题链接,查看题目描述👆
💭 解题思路#
滑动窗口,思路如下:
- 定义两个指针,分别代表左右窗口
- 右指针往后走一次,sum就加上和。
- 如果
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; }}