package com.fishercoder.solutions;

public class _209 {

    public static class Solution1 {
        public int minSubArrayLen(int s, int[] nums) {
            if (nums == null || nums.length == 0) {
                return 0;
            }
            int i = 0;
            int j = 0;
            int min = Integer.MAX_VALUE;
            int sum = 0;
            while (j < nums.length) {
                sum += nums[j++];

                while (sum >= s) {
                    min = Math.min(min, j - i);
                    sum -= nums[i++];
                }
            }
            return min == Integer.MAX_VALUE ? 0 : min;
        }
    }
}

@@ -86,16 +86,94 @@
 tion1 %7B%0A
+        /**%0A         * A classic sliding window problem/solution.%0A         */%0A
         
@@ -202,17 +202,22 @@
 Len(int 
-s
+target
 , int%5B%5D 
@@ -241,104 +241,42 @@
    i
-f (nums == null %7C%7C nums.length == 0) %7B%0A                return 0;%0A            %7D%0A            int i
+nt left = 0;%0A            int right
  = 0
@@ -293,17 +293,19 @@
     int 
-j
+sum
  = 0;%0A  
@@ -318,19 +318,19 @@
     int 
-min
+ans
  = Integ
@@ -347,33 +347,8 @@
 UE;%0A
-            int sum = 0;%0A
     
@@ -362,17 +362,21 @@
  while (
-j
+right
  %3C nums.
@@ -417,15 +417,16 @@
 ums%5B
-j++
+right
 %5D;%0A
-%0A
     
@@ -451,17 +451,22 @@
 (sum %3E= 
-s
+target
 ) %7B%0A    
@@ -481,19 +481,19 @@
         
-min
+ans
  = Math.
@@ -500,18 +500,29 @@
 min(
-min, j - i
+ans, right - left + 1
 );%0A 
@@ -556,12 +556,41 @@
 ums%5B
-i
+left%5D;%0A                    left
 ++
-%5D
 ;%0A  
@@ -597,32 +597,57 @@
               %7D%0A
+                right++;%0A
             %7D%0A  
@@ -663,19 +663,19 @@
  return 
-min
+ans
  == Inte
@@ -694,19 +694,19 @@
 E ? 0 : 
-min
+ans
 ;%0A      

refactor 209