【Java题解】杨辉三角—力扣

 🎉欢迎大家收看,请多多支持🌹

🥰关注小哇,和我一起成长🚀个人主页🚀

⭐目前主更 专栏Java ⭐数据结构

⭐已更专栏有C语言、计算机网络⭐


题目链接:杨辉三角

目录👑

⭐题目描述:​

🌙大体分析: 

🔆题目代码及详解


⭐题目描述:

🌙大体分析: 

 我们可以看到题中要求我们用列表来写这个题,

List<List<Integer>>是一个嵌套列表,列表里面存放的也是列表,且存放的列表里面存放的是Integer类型的对象。这类似与一个二维数组。

所以我们可以先创建一个嵌套列表对象,由于第一行始终只有一个数字1,我们可以先添加进去:

       List<List<Integer>> list = new ArrayList<>();List<Integer> list1 = new ArrayList<>();list1.add(1);list.add(list1);

现在画图来分析一下

 我们可以看到每一行的首位数字都是1,而这之间的数字都是由上一行的同列数字加上前一个数字。

比如,图中红色的3由上一行同列的2和2的前一个数字1相加得来。

因此我们可以利用循环来将每一行中间的数字用上面的方法算出来,我们要注意,是只有每一行除了首尾的数字才这样计算,所以注意循环的判断条件和初始值。

           for(int i = 1; i < numRows;i++){//每一行的开始List<Integer> temp = new ArrayList<>();temp.add(1);//每一行中间List<Integer> prerow = list.get(i-1);//当前行的前一行for(int j = 1; j < i; j++){int val1 = prerow.get(j);int val2 = prerow.get(j - 1);int value = val1 + val2;temp.add(value);}//每一行末尾temp.add(1);list.add(temp);}

每一行先创建一个列表对象,先将1添加进去,然后循环添加中间数字,再添加末尾的1。

每一行列表的数字添加好后,记得还要将这个列表添加进外层列表。

🔆题目代码及详解

该题总的代码:

class Solution {public List<List<Integer>> generate(int numRows) {List<List<Integer>> list = new ArrayList<>();if(numRows <= 0){return list;}List<Integer> list1 = new ArrayList<>();list1.add(1);list.add(list1);for(int i = 1; i < numRows; i++){//每一行的开始List<Integer> temp = new ArrayList<>();temp.add(1);//每一行中间List<Integer> preRow = list.get(i-1);//当前行的上一行for(int j = 1; j < i; j++){int val1 = preRow.get(j);int val2 = preRow.get(j - 1);int value = val1 + val2;temp.add(value);}//每一行的末尾temp.add(1);list.add(temp);}return list;}
}

 首先,我们创建了一个List<List<Integer>>类型的list来存储整个杨辉三角。然后,我们检查numRows是否小于或等于0,如果是,则直接返回一个空的list。

杨辉三角的第一行总是只有一个1,我们将其作为一个List<Integer>添加到list列表中。

从第二行开始,我们逐行生成杨辉三角的每一行,我们需要先获取当前行的上一行preRow,进而才能得到上一行的第 j 列和第 j - 1列的值。

中间元素添加完后再进行尾部元素1的添加。

再将创建好的每一行temp列表添加到list中,然后返回。

这里再补充一个更完整的代码,能在IDEA中打印出列表看到效果:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Test {public List<List<Integer>> generate(int numRows) {List<List<Integer>> list = new ArrayList<>();if(numRows <= 0){return list;}List<Integer> list1 = new ArrayList<>();list1.add(1);list.add(list1);for(int i = 1; i < numRows;i++){//每一行的开始List<Integer> temp = new ArrayList<>();temp.add(1);//每一行中间List<Integer> prerow = list.get(i-1);//当前行的前一行for(int j = 1; j < i; j++){int val1 = prerow.get(j);int val2 = prerow.get(j - 1);int value = val1 + val2;temp.add(value);}//每一行末尾temp.add(1);list.add(temp);}return list;}public static void main(String[] args) {Test test = new Test();Scanner in = new Scanner(System.in);System.out.println(test.generate(in.nextInt()));}
}

 可以看到成功运行


 本次的题目讲解结束啦~🎉🎉

🌹感谢支持!🌹 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/388275.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

the request was rejected because no multipart boundary was found

文章目录 1. 需求描述2. 报错信息3. 探索过程1. 使用postman 排除后端错误2. 搜索网上的解决方法3. 解决方法 1. 需求描述 想要在前端上传一个PDF 发票&#xff0c;经过后端解析PDF之后&#xff0c;将想要的值自动回填到对应的输入框中 2. 报错信息 org.apache.tomcat.util.…

2024年有哪些开放式耳机值得入手?值得关注的开放式耳机评测大赏

如今&#xff0c;开放式耳机越来越受到人们的关注。2024 年更是涌现出了众多优秀的开放式耳机产品。但在众多选择面前&#xff0c;哪一款耳机的音质更出色&#xff1f;哪一款佩戴起来更舒适&#xff1f;又有哪一款在通话质量和连接性能上表现更优异呢&#xff1f;接下来我将详细…

【Devops】CertD 完全免费、自动申请、自动部署SSL证书一站式管理工具 | 自动化HTTPS | 3个月SSL自动轮换

CertD CertD 是一个免费全自动申请和自动部署更新SSL证书的工具。 后缀D取自linux守护进程的命名风格&#xff0c;意为证书守护进程。 关键字&#xff1a;证书自动申请、证书自动更新、证书自动续期、证书自动续签 一、特性 本项目不仅支持证书申请过程自动化&#xff0c;还…

SpringMVC源码解析(二):请求执行流程

SpringMVC源码系列文章 SpringMVC源码解析(一)&#xff1a;web容器启动流程 SpringMVC源码解析(二)&#xff1a;请求执行流程 目录 前言DispatcherServlet入口一、获取HandlerExcutionChain(包括Handler)1、获取Handler1.1、通过request获取查找路径1.2、通过查找路径获取Han…

找工作很迷茫?程序员的岗位宝典来了!

随着数字化转型进展深入&#xff0c;大量数字化、智能化的岗位相继涌现。 但即使这样&#xff0c;大家依然认为&#xff0c;找到一份合适的工作实在是太&#xff01;难&#xff01;了&#xff01; 调查显示&#xff0c;技术创新和商业模式正在成为助推企业发展的两大动力。同时…

【iOS】——锁

五类锁 锁作为一种非强制的机制&#xff0c;被用来保证线程安全。每一个线程在访问数据或者资源前&#xff0c;要先获取&#xff08;Acquire&#xff09;锁&#xff0c;并在访问结束之后释放&#xff08;Release&#xff09;锁。如果锁已经被占用&#xff0c;其它试图获取锁的…

计算机网络必会面经

1.键入网址到网页显示&#xff0c;期间发生了什么 2.在TCP/IP网络模型中。TCP将数据进行分段后&#xff0c;为什么还需要IP层继续分片 3.详细说明tcp三次握手&#xff0c;为什么是三次&#xff0c;若每次握手丢了&#xff0c;解决办法是什么 4.详细说明tcp四次挥手&#xff…

【Python】python基础

本篇文章将讲解以下知识点&#xff1a; &#xff08;1&#xff09;循环语句 &#xff08;2&#xff09;字符串格式化 &#xff08;3&#xff09;运算符 一&#xff1a;循环语句 循环语句有两种&#xff1a;while for 本篇文章只讲解while循环 格式&#xff1a; whil…

Unity材质球自动遍历所需贴图

Unity材质球自动遍历所需贴图 文章目录 Unity材质球自动遍历所需贴图一、原理二、用法1.代码&#xff1a;2.使用方法 一、原理 例如一个材质球名为&#xff1a;Decal_Text_Cranes_01_Mat &#xff0c; 然后从全局遍历出&#xff1a;Decal_Text_Cranes_01_Albedo赋值给材质球的…

【网络基础】初识网络 {计算机网络背景;网络协议初识;网络传输基本流程;网络中的地址管理;网络设备简单介绍}

一、计算机网络背景 1.1 网络发展 计算机网络的发展可以追溯到20世纪60年代&#xff0c;那时候最初的计算机网络只是为了让科学家们能够共享计算机资源和数据。但是在20世纪80年代&#xff0c;互联网的出现彻底改变了计算机网络的面貌&#xff0c;使得人们可以随时随地通过互…

AI剪辑短视频以及账号管理矩阵工具系统搭建开发

目录 前言 一、系统有哪些功能&#xff1f; 二、怎么开发 前言 通过AI剪辑短视频以及生成短视频&#xff0c;以及对自媒体账号的管理功能的功能进行开发。这款系统能够批量混合剪辑视频然后一键发布到绑定好的自媒体账号里面。 一、系统有哪些功能&#xff1f; 1.AI智能文…

【深度学习实战(49)】目标检测损失函数:IoU、GIoU、DIoU、CIoU、EIoU、alpha IoU、SIoU、WIoU原理及Pytorch实现

前言 损失函数是用来评价模型的预测值和真实值一致程度&#xff0c;损失函数越小&#xff0c;通常模型的性能越好。不同的模型用的损失函数一般也不一样。损失函数主要是用在模型的训练阶段&#xff0c;如果我们想让预测值无限接近于真实值&#xff0c;就需要将损失值降到最低…

深入探讨RCE漏洞及其防御策略

1. RCE漏洞 1.1. 漏洞原理 远程代码执行&#xff08;RCE&#xff09;漏洞允许攻击者远程注入并执行操作系统命令或代码&#xff0c;从而控制后台系统。 1.2. 漏洞产生条件 调用第三方组件存在代码执行漏洞。用户输入内容作为系统命令参数拼接到命令中。对用户输入的过滤不严…

汽车雷达系统集成

汽车雷达系统集成是实现高级驾驶辅助系统&#xff08;ADAS&#xff09;和自动驾驶功能的重要环节&#xff0c;它涉及多种硬件和软件的协同工作。以下将详细讲解汽车雷达系统集成的各个方面&#xff1a; 雷达传感器选择 毫米波雷达&#xff1a;毫米波雷达主要使用24GHz和77GHz频…

【SQL Server点滴积累】SQL Server 2016数据库邮件(Database Mail)功能故障的解决方法

今天和大家分享SQL Server 2016数据库邮件(Database Mail)功能故障的解决方法 故障现象&#xff1a; 在SQL Server 2016中配置完成数据库邮件(Database Mail)功能后&#xff0c;当你尝试发送测试邮件后&#xff0c;既收不到测试邮件&#xff0c;也不显示错误消息 KB3186435 -…

Windows + Ubuntu双系统!小白轻松安装

前言 这几天有小伙伴想着装WindowsUbuntu双系统&#xff0c;但苦于找不到办法&#xff0c;就在某篇文章后台留言&#xff1a; 这不&#xff0c;今天就更新了嘛&#xff01;虽然做不到有求必应&#xff0c;但教程帖还是可以写写的&#xff0c;能帮一个是一个&#xff01; 今天要…

FFmpeg:多媒体处理的瑞士军刀

&#x1f60e; 作者介绍&#xff1a;欢迎来到我的主页&#x1f448;&#xff0c;我是程序员行者孙&#xff0c;一个热爱分享技术的制能工人。计算机本硕&#xff0c;人工制能研究生。公众号&#xff1a;AI Sun&#xff08;领取大厂面经等资料&#xff09;&#xff0c;欢迎加我的…

docker安装phpMyAdmin

直接安装phpMyAdmin需要有php环境&#xff0c;比较麻烦&#xff0c;总结了使用docker安装方法&#xff0c;并提供docker镜像。 1.docker镜像 见我上传的docker镜像&#xff1a;https://download.csdn.net/download/taotao_guiwang/89595177 2.安装 1).加载镜像 docker load …

Portainer-CE(可视化工具)一键部署+中文版

目录 Portainer 的主要功能 安装官方版2.19.5 安装中文版 2.19.5 安装中文版2.11.0 Portainer 是一个开源的图形化管理工具&#xff0c;用于管理 Docker 容器、Swarm 集群和 Kubernetes 集群。它提供了一个用户友好的 Web 界面&#xff0c;可以帮助用户更轻松地管理和监控…

[数据结构] AVL树 模拟实现AVL树

标题&#xff1a;[数据结构] AVL树 && 模拟实现AVL树 水墨不写bug 正文开始&#xff1a; 目录 &#xff08;一&#xff09;普通二叉搜索树的痛点 &#xff08;二&#xff09;AVL树简介 &#xff08;1&#xff09;AVL树的概念 &#xff08;三&#xff09;AVL树的…