// Given an index k, return the kth row of the Pascal's triangle.

// For example, given k = 3,
// Return [1,3,3,1].

// Note:
// Could you optimize your algorithm to use only O(k) extra space?

public class Solution {
    // public List<Integer> getRow(int rowIndex) {
    //     List<Integer> list = new ArrayList<Integer>();

    //     // if(rowIndex == 0){
    //     // 	return list;
    //     // }

    // 	ArrayList<ArrayList<Integer>> inter = generate(rowIndex + 1);
    // 	list = inter.get(inter.size() - 1);
    //     return list;
    // }

    // public ArrayList<ArrayList<Integer>> generate(int numRows) {
    //     ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();

    //     if(numRows == 0){
    //     	return list;
    //     }

    //     ArrayList<Integer> tempList = new ArrayList<Integer>();
    //     tempList.add(1);
    //     list.add(tempList);

    //     for(int i = 1; i < numRows; i++){
    //     	tempList = new ArrayList<Integer>();

    //     	for(int j = 0; j <= list.get(list.size() - 1).size(); j++){
    //     		if(j == 0){
    //     			tempList.add(1);
    //     			continue;
    //     		}else if(j == list.get(list.size() - 1).size()){
    //     			tempList.add(1);
    //     			break;
    //     		}

    //     		ArrayList<Integer> last = list.get(list.size() - 1);
    //     		tempList.add(last.get(j) + last.get(j - 1));
    //     	}

    //     	list.add(tempList);
    //     }

    //     return list;
    // }

    public ArrayList<Integer> getRow(int rowIndex) {
        ArrayList<Integer> rst = new ArrayList<Integer>();
        rowIndex += 1;
        if (rowIndex == 0) {
            return rst;
        }

        rst.add(1);
        for (int i = 1; i < rowIndex; i++) {
            ArrayList<Integer> tmp = new ArrayList<Integer>();
            for (int j = 0; j < i + 1; j++) {
                tmp.add(1);
            }
            tmp.set(0, rst.get(0));
            tmp.set(i, rst.get(i - 1));
            for (int j = 1; j < i; j++) {
                tmp.set(j, rst.get(j - 1) + rst.get(j));
            }
            rst = tmp;
        }
        return rst;
    }
}
@@ -1493,19 +1493,45 @@
   // %7D%0A%0A
+%0A
    
+ // creat k lists.%0A    //
  public 
@@ -1571,24 +1571,27 @@
 Index) %7B%0A   
+ //
      ArrayLi
@@ -1638,20 +1638,23 @@
 ();%0A    
+//
     
+ 
 rowIndex
@@ -1659,24 +1659,27 @@
 ex += 1;%0A   
+ //
      if (row
@@ -1691,24 +1691,27 @@
  == 0) %7B%0A   
+ //
          ret
@@ -1718,24 +1718,27 @@
 urn rst;%0A   
+ //
      %7D%0A%0A    
@@ -1732,24 +1732,27 @@
 /     %7D%0A%0A   
+ //
      rst.add
@@ -1756,28 +1756,31 @@
 add(1);%0A    
+//
     
+ 
 for (int i =
@@ -1799,32 +1799,35 @@
 ndex; i++) %7B%0A   
+ //
          ArrayLi
@@ -1869,24 +1869,27 @@
 eger%3E();%0A   
+ //
          for
@@ -1914,32 +1914,35 @@
  + 1; j++) %7B%0A   
+ //
              tmp
@@ -1949,24 +1949,27 @@
 .add(1);%0A   
+ //
          %7D%0A 
@@ -1967,32 +1967,34 @@
       %7D%0A    
+//
         
 tmp.set(0, r
@@ -1973,32 +1973,33 @@
 %7D%0A    //        
+ 
 tmp.set(0, rst.g
@@ -2005,24 +2005,27 @@
 get(0));%0A   
+ //
          tmp
@@ -2048,24 +2048,27 @@
 i - 1));%0A   
+ //
          for
@@ -2093,24 +2093,27 @@
 ; j++) %7B%0A   
+ //
             
@@ -2153,24 +2153,27 @@
 get(j));%0A   
+ //
          %7D%0A 
@@ -2175,24 +2175,26 @@
   %7D%0A    
+//
         
 rst = tm
@@ -2185,16 +2185,17 @@
         
+ 
 rst = tm
@@ -2196,24 +2196,27 @@
 t = tmp;%0A   
+ //
      %7D%0A     
@@ -2213,16 +2213,19 @@
    %7D%0A   
+ //
      ret
@@ -2229,19 +2229,579 @@
 return rst;%0A
+    // %7D%0A%0A    // using one list of k size.%0A    public List%3CInteger%3E getRow(int rowIndex) %7B%0A        List%3CInteger%3E result = new ArrayList%3CInteger%3E();%0A        %0A        if(rowIndex %3C 0)%7B%0A            return result;%0A        %7D%0A        %0A        for(int i = 0; i %3C= rowIndex; i++)%7B%0A            result.add(0);%0A        %7D%0A        %0A        result.set(0, 1);%0A        %0A        for(int i = 1; i %3C= rowIndex; i++)%7B%0A            for(int j = i; j %3E 0; j--)%7B%0A                result.set(j, result.get(j) + result.get(j - 1));%0A            %7D%0A        %7D%0A        %0A        return result;%0A
     %7D%0A%7D

update pascals-triangle solution by using o(k) space.