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] ]
Given numRows, generate the first numRows of Pascal's triangle.
For example, given numRows = 5,
与triangle类似,思想上是一样的,只不过这个向下传播的状态方程是
tmp[k + i] = tmp[k + i] + tmp[k];//左节点,i 为k节点所在的层
tmp[k + i + 1] = tmp[k + i + 1] + tmp[k];//右节点
public class Solution {
public List<List<Integer>> generate(int numRows) {
int num = (numRows + 1)*numRows/2;//元素总数
int[] tmp = new int[num];//临时存放,因为数组比列表好操作
if(numRows < 1){
List<List<Integer>> list = new ArrayList<List<Integer>>();
return list;
}
tmp[0] = 1;
int k = 0;
for(int i = 1 ; i < numRows ; i ++){
for(int j = 0 ; j < i ; j++){
tmp[k + i] = tmp[k + i] + tmp[k];//左节点
tmp[k + i + 1] = tmp[k + i + 1] + tmp[k];//右节点
k ++;
}
}
List<List<Integer>> list = new ArrayList<List<Integer>>();
k = 0;
for(int i = 1 ; i <= numRows ; i ++){
List<Integer> newlist = new ArrayList<Integer>();
for(int j = 0 ; j < i ; j++){
newlist.add(tmp[k++]);
}
list.add(newlist);
}
return list;
}
}