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 {
    public List<List<Integer>> generate(int numRows) {
      List<List<Integer>> result = new ArrayList();
      int len = 1;
      for (int i = 0; i < numRows; i++) {
        List<Integer> row = new ArrayList(len);
        row.add(1);
        if (i > 0) {
          List<Integer> lastRow = result.get(i - 1);
          for (int j = 1; j < len; j++) {
            if (j < lastRow.size()) {
              row.add(lastRow.get(j - 1) + lastRow.get(j));
            }
          }
          row.add(1);
        }
        result.add(row);
        len++;
      }
      return result;
    }
  }
}

@@ -463,19 +463,43 @@
     
-int len = 1
+List%3CInteger%3E row = new ArrayList()
 ;%0A  
@@ -550,137 +550,18 @@
     
-List%3CInteger%3E row = new ArrayList(len);%0A        row.add(1);%0A        if (i %3E 0) %7B%0A          List%3CInteger%3E lastRow = result.get(i -
+row.add(0,
  1);
@@ -565,26 +565,24 @@
 1);%0A        
-  
 for (int j =
@@ -593,54 +593,27 @@
 j %3C 
-len; j++) %7B%0A            if (j %3C lastRow.size()
+row.size() - 1; j++
 ) %7B%0A
@@ -626,103 +626,46 @@
     
-   
- 
 row.
-add(lastRow.get(j - 1) + lastRow.get(j));%0A            %7D%0A          %7D%0A          row.add(1
+set(j, row.get(j) + row.get(j + 1)
 );%0A 
@@ -696,27 +696,27 @@
 add(
-row);%0A        len++
+new ArrayList(row))
 ;%0A  

refactor 118