杨辉三角形
此博客链接:
杨辉三角形
题目链接:https://leetcode-cn.com/problems/pascals-triangle/submissions/
题目
给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
示例 1:
输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
示例 2:
输入: numRows = 1
输出: [[1]]
题解
在写代码的过程中,我发现List也是浅拷贝的,当后面改变List的值,前面的值也会被改变。
代码
class Solution { public List<List<Integer>> generate(int numRows) { List <List<Integer>> list =new ArrayList(); List<Integer> li=new ArrayList(); List<Integer> lis=new ArrayList(); int n=numRows; li.add(1); list.add(li); if(n==1) return list; lis.add(1); lis.add(1); list.add(lis); if(n==2){ return list; } for(int i=2;i<n;i++) { List<Integer> temp=new ArrayList(); temp.add(1); for(int j=1;j<i;j++) { temp.add(lis.get(j-1)+lis.get(j)); // System.out.println(lis.get(j-1)); // System.out.println(temp); } temp.add(1); list.add(temp); lis=temp; } return list; } }
结果
出来混总是要还的