杨辉三角形

此博客链接:

杨辉三角形

题目链接: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;
                }
            }

结果

出来混总是要还的
原文地址:https://www.cnblogs.com/ping2yingshi/p/15103861.html