minimum size subarray sum


刚开始写的版本没这么简洁。然后修修改改就这样了。这类双指针的题,关键在于如何移动左指针。对于这题,如果sum大于等于给的值,我们就开始移动左指针,直到sum小于给出的值。
Minimum Size Subarray Sum

1
2
3
4
5
6
7
8
9
10
11
12
13
public int (int s, int[] nums) {
if (nums == null || nums.length == 0)
return 0;
int left = 0, min = Integer.MAX_VALUE, sum = 0;
for (int i = 0; i < nums.length; ++i) {
sum += nums[i];
while (sum >= s) {
min = Math.min(min, i - left + 1);
sum -= nums[left++];
}
}
return min == Integer.MAX_VALUE ? 0 : min;
}