public int minSubArrayLen(int target, int[] nums) {
int left = 0;
int sum = 0;
int min = Integer.MAX_VALUE;
for(int right = 0;right<=nums.length-1;right++){
sum += nums[right];
while(sum >= target){
min = min < (right - left + 1)? min:(right - left + 1);
sum -= nums[left];
left++;
}
}
return min == Integer.MAX_VALUE ? 0:min;
}
这题好像深入思考好像是我理解了滑动窗口,滑动窗口的两个指针每次运动的原因只有一个,如果有多个元素导致移动则一定是错的(个人愚见)
这一题来说,right移动的原因是sum小于目标值,left移动的原因是sum大于目标值.
这种题目最好还是自己先画一个草图然后仔细研究一下指针移动的判断条件.
就这样