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:
public class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> tri = new ArrayList<List<Integer>>(); List<Integer> curRow = new ArrayList<Integer>(); if (numRows==0) return tri; curRow.add(1); tri.add(curRow); int len; for (int i=1;i<numRows;i++){ List<Integer> preRow = tri.get(i-1); curRow = new ArrayList<Integer>(); len = i+1; //j==0 curRow.add(1); //j==1 to (len-2) for (int j=1;j<len-1;j++) curRow.add(preRow.get(j-1)+preRow.get(j)); //j==len-1 curRow.add(1); tri.add(curRow); } return tri; } }
這是一個簡單的遞推問題。