class Solution {
// 滑动窗口
public int minSubArrayLen(int s, int[] nums) {
int left = 0;
int sum = 0;
int result = Integer.MAX_VALUE;
for (int right = 0; right < nums.length; right++) {
sum += nums[right];
while (sum >= s) {
result = Math.min(result, right - left + 1);
sum -= nums[left++];
}
}
return result == Integer.MAX_VALUE ? 0 : result;
}
}
双指针模拟窗口,这样每个数组进入窗口一次,出去窗口一次即可遍历完整个数组,相比暴力解要快很多,很难想到的是J是窗口末尾,双指针的运用{快慢指针,动与不动,窗口模型}