LeetCode 209
滑動窗口的處理
public class LeetCode209 {
public int minSubArrayLen(int s, int[] nums) {
// 滑動窗口的思路
int left = 0;
int right = 0;
int sum = 0;
int res = nums.length + 1;
while (left < nums.length) {
// 當窗口內總和小於 s 那麼窗口向右擴大 1 個
if (right < nums.length && sum < s) {
sum += nums[right++];
} else {
sum -= nums[left++];
}
// 很神奇的是要這一行
if(sum >= s){
// 如果超了,sum >=s 可以考慮滑動窗口右移動
res = Math.min(res, right - left);
}
}
if (res == nums.length + 1)
return 0;
return res;
}
/**
* @param args
*/
public static void main(String[] args) {
int s = 7;
int[] nums = new int[]{2,3,1,2,4,3};
System.out.println(new LeetCode209().minSubArrayLen(s, nums));
}
}