Java刷题篇——LeetCode118. 杨辉三角

news2024/11/16 0:40:04

1.题目描述

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

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

img

示例1

输入:numRows = 5

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

示例2

输入:numRows = 1

输出:[1]

提示:

  • 1 <= numRosw <= 30

2. 解题思路

  1. 生成一个二维数组,三角形的每一行都以一维数组的形式存储。
  2. 三角形的每一行的第一个数字和最后一个数字都是1。
  3. 每一个三角的元素等于上一行此位置左边的元素与上一行此位置元素的和。
  4. 将本行结果加入三角

3.代码

class Solution {
    public List<List<Integer>> generate(int numRows) {
        // 定义一个二维数组用于存储生成的杨辉三角
        List<List<Integer>> ret = new ArrayList<>();
        
        // 定义一个一维数组用于存储每一行的元素
        List<Integer> list = new ArrayList<>();
        list.add(1); // 第一行只有一个元素1
        ret.add(list); // 将第一行添加到二维数组中
        
        // 循环生成每一行的元素
        for (int i = 1; i < numRows; i++) {
            // 定义一个一维数组用于存储当前行的元素
            List<Integer> curRow = new ArrayList<>();
            curRow.add(1); // 每一行的第一个元素都为1
            
            // 处理中间的元素
            List<Integer> prevRow = ret.get(i - 1); // 获取上一行的元素
            for (int j = 1; j < i; j++) {
                // 当前元素等于上一行的当前位置元素和前一个位置元素的和
                int x = prevRow.get(j) + prevRow.get(j - 1);
                curRow.add(x); // 将当前元素添加到当前行中
            }
            
            curRow.add(1); // 每一行的最后一个元素都为1
            ret.add(curRow); // 将当前行添加到二维数组中
        }
        
        return ret; // 返回生成的杨辉三角
    }
}

运行结果:

image-20231214174109656

4. 复杂度分析

  • 时间复杂度:O(numRows2),因为计算总数为 1 + 2 + 3 + …+ numRows。
  • 空间复杂度:O(numRows2),因为每次计算都会被保留下来,因此空间复杂度的规模与时间复杂度相同。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

搜维尔科技:第九届元宇宙数字人设计大赛校园行讲演活动正式启动—中国戏曲学院站!

由全国高等院校计算机基础教育研究会指导&#xff0c;利亚德集团和爱迪斯通科技发起的数字人设计大赛正在火热进行中&#xff0c;同时进行的元宇宙数字人设计大赛校园行活动也正式拉开序幕&#xff0c;12月13日校园行活动—中国戏曲学院开讲。划重点&#xff1a;此次大赛已成为…

高性能国产TYPE-C/DP/EDP转MIPIDSI/CSI/LVDS,龙迅LT7911D,支持高达4K60HZ的分辨率

LT7911D概述&#xff1a; T7911D是一款高性能TYPE-C/DP/EDP转2 PORT MIPI或者LVDS的芯片&#xff0c;目前主要在AR/VR或者显示器上应用的很多&#xff0c;对于DP1.2输入&#xff0c;LT7911D可配置为1/2/4车道。自适应均衡化使其适用于长电缆应用&#xff0c;最大带宽可达21.6G…

ActiveMQ使用指南

介绍 ActiveMQ是Apache开源组织旗下的一个项目&#xff0c;是一个流行的开源消息中间件。它完全支持JMS1.1和J2EE1.4规范的JMS Provider实现&#xff0c;并且是纯Java开发的产品。ActiveMQ支持多种语言编写客户端&#xff0c;包括C,C,C#,Perl,PHP,Ruby,Ajax等&#xff0c;同时…

zk_dubbo

图灵面试笔记 zk dubbo spi dubbo 文章 dubbo与spring整合之Service、Reference注解处理过程 JAVA备忘录

Flutter:web项目跨域问题解决

前后端解决系列 文章目录 一、Flutter web客户端解决本地环境调试跨域问题二、Flutter web客户端解决线上环境跨域问题 一、Flutter web客户端解决本地环境调试跨域问题 就一句命令【--web-browser-flag "--disable-web-security"】&#xff0c;用来屏蔽浏览器域名请…

在线免费压缩pdf文件

在线免费压缩pdf文件&#xff0c;不用登陆哦&#xff0c; https://www.ilovepdf.com/ https://online2pdf.com/#

第十二章 React 路由配置,路由参数获取

一、专栏介绍 &#x1f436;&#x1f436; 欢迎加入本专栏&#xff01;本专栏将引领您快速上手React&#xff0c;让我们一起放弃放弃的念头&#xff0c;开始学习之旅吧&#xff01;我们将从搭建React项目开始&#xff0c;逐步深入讲解最核心的hooks&#xff0c;以及React路由、…

模型放置到3D场景中后模型位置与鼠标选中的位置不一致怎么办?

在线工具推荐&#xff1a;3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 1、问题 从事3D建模相关工作的朋友们在工作中经常会遇到以下几种问题&#…

网络协议疑点记录

1.RIP, OSPF,BGP 搞清RIP和OSPF的区别,这是我见过最好的总结! - 知乎 首先什么是自治系统:治系统就是几个路由器组成了一个小团体 ?,小团体内部使用专用的协议进行通信,而小团体和小团体之间也使用专用的协议进行通信。 IGP RIP 距离矢量路由算法,bellman-ford算法,…

浏览器js中添加日志断点

一、需求 本地调试时&#xff0c;可以直接代码里使用console.log直接调试&#xff1b; 代码已更新到服务器&#xff0c;不想要提交代码&#xff0c;如何通过添加console.log调试呢 二、实现 使用浏览器添加日志断点的方式&#xff0c;当然vue这种打包的不可行哦 设置完成后…

基于人气与协同过滤的图书推荐系统研究与实践(文末送书)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

<蓝桥杯软件赛>零基础备赛20周--第10周--二分

报名明年4月蓝桥杯软件赛的同学们&#xff0c;如果你是大一零基础&#xff0c;目前懵懂中&#xff0c;不知该怎么办&#xff0c;可以看看本博客系列&#xff1a;备赛20周合集 20周的完整安排请点击&#xff1a;20周计划 每周发1个博客&#xff0c;共20周&#xff08;读者可以按…

loadrunner脚本--参数化03(ODBC连接测试mysql)

loadrunner脚本–参数化03(ODBC连接测试mysql) 文章目录 loadrunner12.55中&#xff0c;想用ODBC连接mysql数据库进行参数化时&#xff0c;参数列表里面没有data wizard数据向导&#xff0c;而是变成了import paramete&#xff0c;求告知data wizard数据向导去哪里了原因参数数…

win10输入法设置方法,打造高效输入体验

win10作为一款强大的操作系统&#xff0c;注重用户体验的个性化设置。输入法作为我们与电脑互动的桥梁之一&#xff0c;其设置显得尤为重要。本文将深入介绍win10输入法设置的三种方法&#xff0c;让您轻松打造符合个性需求的输入环境。 方法1&#xff1a;通过系统设置更改输入…

安装DevEco Studio

下载 首先进入鸿蒙开发者官网&#xff0c;顶部导航栏选择开发->DevEco Studio 根据操作系统下载不同版本&#xff0c;其中Mac(X86)为英特尔芯片&#xff0c;Mac(ARM)为M芯片。 安装 下载完毕后&#xff0c;开始安装。 点击Agree 首次使用&#xff0c;请选择Do not impor…

Leetcode—2697.字典序最小回文串【简单】

2023每日刷题&#xff08;五十八&#xff09; Leetcode—2697.字典序最小回文串 实现代码 char * makeSmallestPalindrome(char * s){int len strlen(s);int left 0, right len - 1;while(left < len / 2) {if(s[left] > s[right]) {s[left] s[right];} else {s[ri…

linux系统下文件操作常用的命令有哪些?

面试官&#xff1a;说说 linux系统下 文件操作常用的命令有哪些&#xff1f; 一、是什么 Linux 是一个开源的操作系统&#xff08;OS&#xff09;&#xff0c;是一系列Linux内核基础上开发的操作系统的总称&#xff08;常见的有Ubuntu、centos&#xff09; 系统通常会包含以下…

Linux---创建、删除文件及目录命令

1. 创建、删除文件及目录命令的使用 命令说明touch 文件名创建指定文件mkdir 目录名创建目录(文件夹)rm 文件名或者目录名删除指定文件或者目录rmdir 目录名删除空目录 touch命令效果图: mkdir命令效果图: rm命令效果图: rm删除目录效果图 说明: rm命令想要删除目录需要加上…

C++初阶(十六)优先级队列

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、priority_queue的介绍和使用1、priority_queue的介绍2、priority_queue的使用 二、priori…

Linux---查看目录命令

1. 查看目录命令的使用 命令说明ls查看当前目录信息tree以树状方式显示目录信息 ls命令效果图: tree命令效果图: 2. 查看当前目录路径 命令说明pwd查看当前目录路径 pwd命令效果图: 3. 清除终端内容 命令说明clear清除终端内容 pwd命令效果图: 4. 总结 ls和tree是我们…