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,最后把处理好的当前层数据存入结果集合中返回

相关推荐
通信小呆呆3 小时前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
H__Rick3 小时前
自动对焦学习-3
人工智能·学习·计算机视觉
benben0443 小时前
强化学习之DQN算法族(基于gymnasium开发)
算法
Daisy Lee3 小时前
量化学习-第1章-什么是量化金融
学习·金融·datawhale
Alsn864 小时前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
YM52e4 小时前
买菜计算器小应用 - HarmonyOS ArkUI 开发实战-PC版本
学习·华为·harmonyos·鸿蒙·鸿蒙系统
何以解忧,唯有..4 小时前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
小雨下雨的雨5 小时前
HarmonyOS ArkUI训练营入门-组件掌握系列-Animation 动画效果实现-PC版本
学习·华为·harmonyos·鸿蒙
想吃火锅10055 小时前
【leetcode】88.合并两个有序数组js
算法