MinSubArrayLen { public static int minSubArrayLen(int s, int[] nums) { int left = 0, right = 0; int sum = 0; int min = Integer.MAX_VALUE; while (sum >= s || right < nums.length) { if (sum < s) { sum += nums[right++]; } else if (sum > s) { sum -= nums[left++]; } else { int step = right - left; if (step < min) { min = step; } sum -= nums[left++]; } } return min; }  static int minSubArrayLen(int s, int[] nums);  }
@Test(dataProvider = "arrayProvider") public void test(int sum, int[] array, int expected) { assertEquals(MinSubArrayLen.minSubArrayLen(sum, array), expected); }