Java解决杨辉三角问题

Java解决杨辉三角问题,第1张

给定一个非负整数 numRows生成「杨辉三角」的前 numRows 行。

在「杨辉三角」中,每个数是它左上方和右上方的数的和。

示例 1:

输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
示例 2:

输入: numRows = 1
输出: [[1]]

解题思路:

(1)第n行恰好有n个元素

(2)每一行的开头和结尾全是1

(3)中间位置元素值为[i,j]=[i-1,j-1]+[i-1,j]

例如下面:第三行第二列

[3,2]=[2,1]+[2,2]

第四行第三列:[4,3]=[3,2]+[3,3]

(4)特殊行是第一行和第二行。

ublic class num118 {
    public List> generate(int numRows){
        List> retList = new ArrayList<>();
         //特殊的第一行和第二行
        List first = new ArrayList<>();
        first.add(1);
        retList.add(first);
        if (numRows == 1){
            return retList;
        }
        //组装第二行
        List sec = new ArrayList<>();
        sec.add(1);
        sec.add(1);
        retList.add(sec);
        if(numRows == 2){
            return retList;
        }
        //此时numRows至少是3行
        for (int i = 3;i <= numRows; i++){
            List prev = retList.get(i-1-1);
            List cur = new ArrayList<>();
            //每一行第一个元素都是1
            cur.add(1);
            for(int j = 2; j < 1; j++){
                //[i,j]=[i-1,j-1]+[i-1,j]
                 int tmpValue = prev.get(j-1-1) + prev.get(j-1);
                 cur.add(tmpValue);
            }
            //每一行最后一个元素为1
            cur.add(1);
        }
        return retList;

    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/733022.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存