LeetCode算法学习之杨辉三角

完整代码如下

java 复制代码
class Solution {
    public List<List<Integer>> generate(int numRows) {
        //初始化一个结果数组
        List<List<Integer>> result = new ArrayList<>();
        if(numRows == 0){
            return result;
        }
        List<Integer> firstRow = new ArrayList<>();
        firstRow.add(1);
        result.add(firstRow);
        
        //从第二行开始
        for(int i = 1;i<numRows;i++){
            List<Integer> preNums = result.get(i-1);
            List<Integer> currentNums = new ArrayList<>();

            currentNums.add(1);
            for(int j = 1;j<i;j++){
                currentNums.add(preNums.get(j-1)+preNums.get(j));
            }
             currentNums.add(1);
             result.add(currentNums);
        }
       
        return result;
    }
}

解题思路:

如果输入的numRows为0的话,则直接返回结果数组,因为第0行没有元素,杨辉三角的第1行是固定不变的,所以可以直接进行添加,从第2行开始,杨辉三角的生成规律是首尾固定为1,中间的数依赖于上一层的数值进行两两相加计算得到的,所以我们可以在numRows的循环中获取上一层数值,来计算当前层的数值,当前层的计算方式:首元素固定添加为1,进入循环计算上一层两两相加的数值添加到当前层,最后一位元素添加为1,最后把处理好的当前层数据存入结果集合中返回

相关推荐
吃着火锅x唱着歌2 分钟前
Effective C++ 学习笔记 条款45 运用成员函数模板接受所有兼容类型
c++·笔记·学习
2601_956121979 分钟前
Bellman-ford算法
算法
0_Karl_011 分钟前
永磁爬壁机器人开源资源指南
学习·机器人
叠层归一研究院15 分钟前
基于区分本源的此刻存在唯一性本体论推演
人工智能·算法
luj_176816 分钟前
尾椎藏今生记忆?骨盆对应不确定性
开发语言·网络·c++·经验分享·算法
深圳多奥智能一卡(码、脸)通系统18 分钟前
智能梯控SDK可直接用于第三方开发对接的接口文档说明书
服务器·前端·算法
Bode_200220 分钟前
AI工具/大模型学习
人工智能·学习
小蒜学长36 分钟前
springboot党建云课堂学习与管理系统(代码+数据库+LW)
java·数据库·spring boot·后端·学习
裕晟资质规划10 小时前
武器装备科研生产单位保密资质申请方法论:条件模型与流程拆解
人工智能·算法