问题描述:
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] ]
问题分析:
第n行的数据是在第n-1行的基础上计算出来的。是一个迭代的过程
解决方法:
//生成杨辉三角的前n行 public static List<List<Integer>> generate(int numRows) { List<List<Integer>> list = new ArrayList<List<Integer>>(); //定义list if(numRows <= 0) return list; List<Integer> row = new ArrayList<Integer>(); //第一行 row.add(1); list.add(row); for(int i = 2; i <= numRows; i++){ //生成后面的n-1行数据 List<Integer> l = new ArrayList<Integer>(); //存储第i行数据 l.add(1); row = new ArrayList<Integer>(list.get(list.size() - 1)) ; //获得上一行数据 for(int j = 0; j < row.size() - 1; j++){ int e = row.get(j) + row.get(j + 1); l.add(e); } l.add(1); list.add(l); } return list; }