public int minSubArrayLen(int s, int[] nums) { if( 0 == nums.length || null == nums) { return 0; } int l = 0 ; int r = 0; int result = Integer.MAX_VALUE; int cur = nums[0]; while(l < nums.length) { if(cur < s && r < nums.length -1) { r++; cur += nums[r]; } else { if(cur >= s ){ result = Math.min(result , r - l + 1); } cur -= nums[l]; l++; } } return result == Integer.MAX_VALUE ? 0 : result; }
维护一个滑动窗口。