Leetcode 118 杨辉三角

news/2024/9/23 9:50:37/

目录

  • 一、问题描述
  • 二、示例及约束
  • 三、代码
    • 方法一:数学
  • 四、总结

一、问题描述

  给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。
  在「杨辉三角」中,每个数是它左上方和右上方的数的和。
在这里插入图片描述

二、示例及约束

示例 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

三、代码

方法一:数学

class Solution {
public:vector<vector<int>> generate(int numRows) {vector<vector<int>> ret(numRows);//创建二维数组ret,初始数组的行数为numRowsfor (int i = 0; i < numRows; i++) {ret[i].resize(i + 1);//每行初始化为i + 1列ret[i][0] = ret[i][i] = 1;  //每行最左和最右元素固定为1/*每个数是它左上方和右上方的数的和for (int j = 1; j < i; ++j) {ret[i][j] = ret[i - 1][j] + ret[i - 1][j - 1];}*/for (int j = 1; j <= i / 2; j++) {//对于杨辉三角而言,左右是对称的,因此遍历一半即可ret[i][j] = ret[i - 1][j -1] + ret[i - 1][j];if (i - j != j) {//当i是奇数的时候,最中间的数是加法得到的,不能对称赋值得到ret[i][i - j] = ret[i][j];//对称赋值}}}return ret;}
};

四、总结

时间复杂度:
方法一:O( n u m R o w s 2 numRows^2 numRows2)。
空间复杂度:
方法一:O(1),不考虑返回的数组空间。

方法时间复杂度空间复杂度
方法一O( n u m R o w s 2 numRows^2 numRows2)O(1)

http://www.ppmy.cn/news/1433822.html

相关文章

大数据学习的第三天

文章目录 学习大数据命令的方式查看文件拷贝文件的方式添加数据的方式 出现了问题移动文件 hadoop工作流程和工作机制的方式namenodedatanodesecondarynamenode(主节点) 学习大数据命令的方式 查看文件 hadoop fs -cat /test/2.txt下载文件 hadoop fs -get -f /test/2.txt-f …

class094 贪心经典题目专题6【左程云算法】

class094 贪心经典题目专题6【左程云算法】 前言版权推荐class094 贪心经典题目专题6最后 前言 2024-4-23 14:01:48 以下内容源自《【左程云算法】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星月云 博客主页是https://…

M - 上帝造题的八分钟(数位dp,dfs—dp,****)

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 我们称一个数为 fufu 数&#xff0c;当且仅当一个数满足下述性质&#xff1a;它的数位中有至少 333 个相邻的数字 333&#xff0c;且数字 000 的个数与数字 111 的个数相差至少为 111 的正整数…

C语言实现双人贪吃蛇项目(基于控制台界面)

一.贪吃蛇 贪吃蛇是一款简单而富有乐趣的游戏&#xff0c;它的规则易于理解&#xff0c;但挑战性也很高。它已经成为经典的游戏之一&#xff0c;并且在不同的平台上一直受到人们的喜爱和回忆。 二.贪吃蛇的功能 游戏控制&#xff1a;玩家可以使用键盘输入设备来控制蛇的移动方…

机器学习--第六次课

前言 先讲课,大概的重点是回归和梯度下降!!! 先回顾一手,pr曲线啥的 正文 回归和分类 回归简单来说就是输出一个数值,就是回归问题,例如预测明天的空气指数,而分类问题就是做选择题 ,也就是,分类,那么回归为啥叫回归呢?可以理解为希望输出的数字回归到真实值附近.他们虽然…

安全小课堂丨什么是暴力破解?如何防止暴力破解

什么是暴力破解&#xff1f; 暴力破解也可称为穷举法、枚举法&#xff0c;是一种比较流行的密码破译方法&#xff0c;也就是将密码进行一一推算直到找出正确的密码为止。比如一个6位并且全部由数字组成的密码&#xff0c;可能有100万种组合&#xff0c;也就是说最多需要尝试10…

一个基于 Vue.js 实现的简单增删改查(CRUD)案例

以下是一个基于 Vue.js 实现的简单增删改查&#xff08;CRUD&#xff09;案例&#xff0c;使用了 Vue CLI 创建项目&#xff0c;并假设你已经安装了 Vue CLI。这个案例将展示如何创建一个简单的待办事项列表&#xff08;Todo List&#xff09;&#xff0c;实现添加、删除、编辑…

项目开发的详细步骤(精华版)

项目开发是指从项目启动到项目交付的全过程&#xff0c;涵盖了需求分析、设计、编码、测试、部署等多个环节。以下为项目开发的详细步骤&#xff1a; 1. 项目启动与规划 项目立项 商业论证&#xff1a;分析项目投资回报率、风险、市场前景等&#xff0c;确定项目价值和可行性…