【LC简单】118. 杨辉三角

简介: 【LC简单】118. 杨辉三角

题目描述:

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

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

73d8c9be8b2a4960a39693770de0ac9a.png

示例 1:

输入: numRows = 5

输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

示例 2:

输入: numRows = 1

输出: [[1]]

提示:

1 <= numRows <= 30

来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/pascals-triangle

解题思路:

观察题目给出方法返回值为List<List>和给出的示例; 题目的要求是返回一个线性表, 线性表中的每个元素为杨辉三角的每一行 , 也就是说返回的线性表表中的每个元素其实也是一个线性表 , 这里线性表中的每个元素为一个int类型的值 , 题目可以选择用顺序表去实现 ;

观察杨辉三角的规律 , 其第一行只有一个数字1, 先将其添加到一个顺序表中 , 再将这个顺序表添加到要返回的顺序表中 ; 从第二行开始就要找找规律了, 其每一行的第一个数字和最后一个数字都为1, 中间的数字为上一行顺序表中相同位置元素和前一个位置元素的和 , 这里,可以利用一个嵌套循环实现 , 每次循环先将第一个元素1添加到顺序表中, 内层循环实现将中间的数字添加到顺序表中, 再将最后一个元素1添加到顺序表中 , 最后将这个代表一行的顺序表添加到要返回的顺序表中;


至于获取中间的每个数字 , 只需要去访问要返回的顺序表中上一行对应两个位置的元素 , 求和即可 .

代码实现:

class Solution {
    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> ret = new ArrayList<>();
        //第一行
        List<Integer> list1 = new ArrayList<>();
        //第一行只有一个数字1
        list1.add(1);
        ret.add(list1);
        //再从第二行计算  
        for(int i = 1; i < numRows; i++) {
            //当前行 
            List<Integer> list = new ArrayList<>();
            //每一行的第一个数字都为1
            list.add(1);
            //获取上一行
            List<Integer> prevRow = ret.get(i-1);
            //从第二行的第一个数字开始计算
            for(int j = 1; j < i; j++) {
                int num = prevRow.get(j)+prevRow.get(j-1);
                list.add(num);
            }
            //每一行的最后一个数字也为1
            list.add(1);
            ret.add(list);
        }
        return ret;
    }
}

提交结果:73d8c9be8b2a4960a39693770de0ac9a.png

目录
相关文章
|
传感器 运维 物联网
IT知识百科:什么是蜂窝小区?
【2月更文挑战第24天】
1245 5
IT知识百科:什么是蜂窝小区?
|
XML 缓存 前端开发
Android 架构之 MVI 初级体 | Flow 替换 LiveData 重构数据链路(下)
Android 架构之 MVI 初级体 | Flow 替换 LiveData 重构数据链路
823 0
|
机器人 Python
Robot Framework之python脚本调用
前言 喜欢使用RF的原因之一就是能自己定义关键字,这篇就简单说下如何创建系统关键字,先来个最简单的,求比较两个数的大小 一、建立库文件 假设python的安装路径在D:/下面(作者是放在D:\python\python27) 1、在D:\python\...
4103 0
|
10月前
|
人工智能 测试技术 数据处理
通义灵码 2.0 体验报告:Deepseek 加持下的 Python 开发之旅
通义灵码 2.0 体验报告:Deepseek 加持下的 Python 开发之旅
434 11
|
9月前
|
安全 程序员 Windows
程序员必备工具:Xshell 7专业版安装与优化全攻略
Xshell 7 是一款由韩国 NetSarang 公司开发的终端模拟器,专为Windows系统设计,广泛用于远程连接和服务器管理。本文详细介绍其下载、安装流程及配置方法,包括界面语言设置、新建会话连接、高级功能如多窗口布局与脚本自动化,还提供了常见问题解答,帮助用户高效使用软件。
1183 12
|
XML JSON 中间件
中间件数据格式的转换
中间件数据格式转换涉及在系统间传递数据时调整格式,以适应不同标准。常见转换包括:JSON与XML互转、文本到二进制、结构化与非结构化数据转换、不同数据标准间的转换及处理自定义格式。实现转换通常借助编程语言(如Python的json、xml库)和工具(如Apache NiFi、StreamSets)。设计时需考虑数据源、目标、传输和性能需求。
293 2
|
Kubernetes 应用服务中间件 API
【Ingress 秘籍】集群进出流量的总管:揭秘 Kubernetes 中 Ingress 的终极奥秘!
【8月更文挑战第25天】Ingress是Kubernetes中用于管理HTTP与HTTPS流量进入集群的核心功能。作为集群内外通信的桥梁,Ingress通过定义规则将外部请求导向内部服务。本文详细介绍了Ingress的基本概念、配置方法及其实现方式。通过使用不同的Ingress控制器(如Nginx、Traefik等),用户可以根据需要选择最适合的方案。文中还提供了示例代码展示如何创建服务、部署应用及配置Ingress规则。
434 6
|
JSON 开发工具 数据格式
App Inventor 2 接入阿里云短信服务,实现短信验证码功能
App Inventor 2 接入阿里云短信服务,实现短信验证码功能:发送短信验证码功能一般都是基于短信平台提供的sdk进行调用,这里是基于阿里云短信平台进行的开发。
544 1
|
JSON 文字识别 前端开发
如何利用OCR进行营业执照图片识别?
使用营业执照识别技术,实现对企业信息的结构化识别和录入,可应用于电商、零售、O2O等行业的商户入驻审查场景,实现商户信息的自动化审查和录入,有效提高客户体验,并大幅度提升服务标准和运营效率首先,激活使用权限,点此链接然后,进行在线调试看是否成功,如下图:返回数据如下: { "code": .
1545 0
如何利用OCR进行营业执照图片识别?
|
存储 设计模式 缓存
详解MySQL Error Log
Error Log是MySQL的一个非常重要的日志,主要用来记录mysqld的启动和关闭,以及mysqld启动,关闭以及运行期间的诊断信息。本文主要对Error Log的初始化以及写入过程做一个详细的介绍。以下介绍基于MySQL 8.0.28。初始化日志服务的初始化代码调用堆栈如下:- mysqld_main   - init_error_log   //初始化日志子系统   - log_buil
详解MySQL Error Log