package com.fishercoder.solutions;

import java.util.ArrayList;
import java.util.List;

/**
 * 118. Pascal's Triangle
 * Given numRows, generate the first numRows of Pascal's triangle.

 For example, given numRows = 5,
 Return

 [
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
 ]

 */
public class _118 {

  public static class Solution1 {
    /**fill out values from left to right*/
    public List<List<Integer>> generate(int numRows) {
      List<List<Integer>> result = new ArrayList();
      List<Integer> row = new ArrayList();
      for (int i = 0; i < numRows; i++) {
        row.add(0, 1);
        for (int j = 1; j < row.size() - 1; j++) {
          row.set(j, row.get(j) + row.get(j + 1));
        }
        result.add(new ArrayList(row));
      }
      return result;
    }
  }

  public static class Solution2 {
    /**fill out values from right to left
     * credit: https://leetcode.com/problems/pascals-triangle/discuss/38141/My-concise-solution-in-Java/36127*/
    public List<List<Integer>> generate(int numRows) {
      List<List<Integer>> result = new ArrayList();
      List<Integer> row = new ArrayList();
      for (int i = 0; i < numRows; i++) {
        for (int j = row.size() - 1; j >= 1; j--) {
          row.set(j, row.get(j) + row.get(j - 1));
        }
        row.add(1);
        result.add(new ArrayList<>(row));
      }
      return result;
    }
  }
}

@@ -85,218 +85,8 @@
 t;%0A%0A
-/**%0A * 118. Pascal's Triangle%0A * Given numRows, generate the first numRows of Pascal's triangle.%0A%0A For example, given numRows = 5,%0A Return%0A%0A %5B%0A     %5B1%5D,%0A    %5B1,1%5D,%0A   %5B1,2,1%5D,%0A  %5B1,3,3,1%5D,%0A %5B1,4,6,4,1%5D%0A %5D%0A%0A */%0A
 publ
@@ -102,16 +102,18 @@
 _118 %7B%0A%0A
+  
   public
@@ -138,27 +138,43 @@
 tion1 %7B%0A    
-/**
+    /**%0A         * 
 fill out val
@@ -195,19 +195,33 @@
 to right
-*/%0A
+%0A         */%0A    
     publ
@@ -265,32 +265,38 @@
 umRows) %7B%0A      
+   
+   
 List%3CList%3CIntege
@@ -317,32 +317,38 @@
 ew ArrayList();%0A
+      
       List%3CInteg
@@ -372,32 +372,38 @@
 ayList();%0A      
+     
+ 
 for (int i = 0; 
@@ -414,32 +414,40 @@
 numRows; i++) %7B%0A
+        
         row.add(
@@ -453,32 +453,40 @@
 (0, 1);%0A        
+    
+    
 for (int j = 1; 
@@ -508,24 +508,34 @@
 - 1; j++) %7B%0A
+          
           ro
@@ -581,26 +581,39 @@
         
-%7D%0A
+        %7D%0A     
         
 result.a
@@ -596,32 +596,35 @@
  %7D%0A             
+   
 result.add(new A
@@ -641,32 +641,44 @@
 ow));%0A      
-%7D%0A
+      %7D%0A     
       
+ 
 return resul
@@ -688,15 +688,23 @@
     
-%7D%0A
+    %7D%0A  
   %7D%0A%0A
+  
   pu
@@ -733,23 +733,39 @@
 tion2 %7B%0A
+    
     /**
+%0A         * 
 fill out
@@ -791,16 +791,20 @@
 to left%0A
+    
      * c
@@ -904,23 +904,37 @@
 va/36127
+%0A         
 */%0A    
+ 
+   
 public L
@@ -978,24 +978,30 @@
 ws) %7B%0A      
+    
+  
 List%3CList%3CIn
@@ -1036,24 +1036,30 @@
 st();%0A      
+     
+ 
 List%3CInteger
@@ -1079,24 +1079,30 @@
 rrayList();%0A
+      
       for (i
@@ -1131,32 +1131,40 @@
  i++) %7B%0A        
+      
+  
 for (int j = row
@@ -1193,32 +1193,42 @@
 --) %7B%0A          
+     
+     
 row.set(j, row.g
@@ -1260,26 +1260,41 @@
         
+  
-%7D%0A
+      %7D%0A       
         
 row.add(
@@ -1277,32 +1277,33 @@
 %0A               
+ 
 row.add(1);%0A    
@@ -1294,24 +1294,32 @@
 row.add(1);%0A
+        
         resu
@@ -1350,26 +1350,38 @@
 ow));%0A      
+     
+ 
 %7D%0A
+      
       return
@@ -1393,16 +1393,22 @@
 lt;%0A    
-%7D%0A
+    %7D%0A  
   %7D%0A%7D%0A

refactor 118