双指针,窗口类
public class Solution {
public int minSubArrayLen(int s, int[] nums) {
if(s < 0 || nums == null || nums.length == 0) return 0;
int size = Integer.MAX_VALUE;
int sum = 0;
int j = 0;
for(int i = 0; i < nums.length; i++){
while(j < nums.length && sum < s){
sum += nums[j++];
}
if(sum >= s) size = Math.min(j - i, size);
sum -= nums[i];
}
if(size == Integer.MAX_VALUE) return 0;
return size;
}
}更好的写法是我改写九章的答案,9ms,重点在于 validWindow() 函数的优化。
Last updated