杨辉三角打印 题目:https://leetcode.com/problems/pascals-triangle/
解题思路:
1.第一个元素是1
2.从第二行开始,第一个元素和最后一个元素都是1
3.从第三行 开始中间的元素是上一行元素当前位置和前一个位置的和 即 pre.get(j-1)+pre.get(j)
4.不断更新上一个列表pre
public static void main(String[] args) {
List<List<Integer>> generate = generate(5);
for (List<Integer> integerList : generate) {
System.out.println(integerList);
}
}
/**
* 杨辉数组打印
* @param numRows
* @return
*/
public static List<List<Integer>> generate(int numRows) {
List<List<Integer>> list=new ArrayList<>();
if(numRows==0){
return list;
}
List<Integer> pre=new ArrayList<>();
pre.add(1);
list.add(pre);
for(int i=0;i<numRows-1;i++){
List<Integer> cur=new ArrayList<>();
cur.add(1);
for(int j=1;j<pre.size();j++){
cur.add(pre.get(j-1)+pre.get(j));
}
cur.add(1);
list.add(cur);
pre=cur;
}
return list;
}