**Input:** numRows = 5
**Output:** [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
**Input:** numRows = 1
**Output:** [[1]]
class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> res = new ArrayList<List<Integer>>();
// edge cases
if (numRows <= 0) return res;
// iteration
for (int i = 0; i < numRows; i++) {
List<Integer> curr = new ArrayList<Integer>();
curr.add(1);
if (i != 0) {
List<Integer> prev = res.get(res.size() - 1);
for (int j = 0; i > 1 && j < prev.size() - 1; j++) {
int tmp = prev.get(j) + prev.get(j+1);
curr.add(tmp);
}
curr.add(1);
}
res.add(curr);
}
return res;
}
}
/*
iteration
recursion
*/