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] ]
杨辉三角,解法就是遍历每一层,在上一层的基础上修改值。
e.g:
从第二层到第三层:
{1,3,3,1} -> {1,4,6,4,1} save {3}, replace {3} with {1} + {3} = {4}, save next {3}, replace next {3} with {3} + {3} = {6}, save {1} replace {1} with {3} + {1} = {4}
public class Solution {
public ArrayList<ArrayList<Integer>> generate(int numRows) {
ArrayList<ArrayList<Integer>> totalList = new ArrayList<>();
if (numRows == 0) return totalList;
ArrayList<Integer> firstRow = new ArrayList<>();
firstRow.add(1);
totalList.add(firstRow);
int n = 1;
while (n < numRows) {
ArrayList<Integer> upper = totalList.get(n - 1);
ArrayList<Integer> newRow = new ArrayList<>();
totalList.add(newRow);
newRow.add(1);
for (int i = 1; i < upper.size(); i++) {
newRow.add(upper.get(i - 1) + upper.get(i));
}
newRow.add(1);
n++;
}
return totalList;
}
}