栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

力扣第118题—杨辉三角

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

力扣第118题—杨辉三角

题目要求:

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

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

杨辉三角特点:

每一行的元素个数和行数是相同的,第一行一个元素,第二行两个元素......每一行的第一个元素和最后一个元素都是1第三行的第二列等于第二行的第一列加第二列:[ 3,2 ] = [ 2,1 ] + [ 2,2 ]以此类推我们能得出下图规律

这个过程我们可以通过下面的动图直观的理解

 代码实现:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

//杨辉三角
public class LeetCode118 {
    public List> generate(int numRows) {
        List> ret = new ArrayList<>();
        //先写特殊的前两行
        List fir = Arrays.asList(1);
        ret.add(fir);
        if (numRows == 1){
            return ret;
        }
        List sec = Arrays.asList(1,1);
        ret.add(sec);
        if (numRows == 2){
            return ret;
        }

        //此时numRows至少为三
        //[i,j] = [ i -1 ,j -1 ] + [ i -1 ,j ]
        //i为行数,j为列数
        for (int i = 3; i <= numRows; i++) {
            //先取得前一行的所有元素
            //i-1表示前一行的行号,但是索引是从0开始的,所以需要再减1
            List prev = ret.get(i-1-1);
            List cur = new ArrayList<>();
            //加入第一行
            cur.add(1);
            //从第2列开始,到i-1列,也就是倒数第二列
            for (int j = 2; j < i; j++) {
                int tmpValue = prev.get(j-1-1) +prev.get(j-1);
                cur.add(tmpValue);
            }
            //每行最后一列为1
            cur.add(1);
            ret.add(cur);
        }
        return ret;

    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/727822.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号