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] ]Solution 1
public class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> lists = new ArrayList<List<Integer>>();
if(numRows == 0){
return lists;
}
List<Integer> list = new ArrayList<Integer>();
list.add(1);
lists.add(list);
for(int i = 1; i < numRows; i++){
List<Integer> last = lists.get(i - 1);
List<Integer> cur = new ArrayList<Integer>();
cur.add(1);
for(int j = 1; j < last.size(); j++){
cur.add(last.get(j - 1) + last.get(j));
}
cur.add(1);
lists.add(cur);
}
return lists;
}
}
Solution 2
public class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> rst = new ArrayList<List<Integer>>();
if (numRows == 0) {
return rst;
}
ArrayList<Integer> first = new ArrayList<Integer>();
first.add(0, 1);
rst.add(first);
for (int i = 1; i < numRows; i++) {
ArrayList<Integer> tmp = new ArrayList<Integer>(i + 1);
for (int j = 0; j < i + 1; j++){
tmp.add(-1);
}
ArrayList<Integer> prev = (ArrayList<Integer>) rst.get(i - 1);
tmp.set(0, prev.get(0));
tmp.set(i, prev.get(i - 1));
for (int j = 1; j < i; j++){
tmp.set(j, prev.get(j - 1)+prev.get(j));
}
rst.add(tmp);
}
return rst;
}
}