class Solution { public int minSubArrayLen(int s, int[] nums) { if (nums.length == 0) { return 0; } int length = Integer.MAX_VALUE; int sum = 0; for (int i = 0, j = 0; j < nums.length; j++) { sum += nums[j]; while (i < nums.length && sum >= s) { length = Math.min(length, j - i + 1); sum -= nums[i++]; } } return length == Integer.MAX_VALUE ? 0 : length; }}
Nlog(N) could be get the sum for each steps and binary search of it.