力扣第118题 杨辉三角 c++ 有注释 新手易懂
题目
简单
给定一个非负整数 numRows
,生成「杨辉三角」的前 numRows
行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
示例 1:
输入: numRows = 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
示例 2:
输入: numRows = 1 输出: [[1]]
下面分别介绍其时间复杂度和空间复杂度。
时间复杂度:
该算法使用两层循环来生成杨辉三角,外层循环迭代 numRows 次,内层循环迭代 i 次(i 表示当前行号)。因此,总的时间复杂度为 O(numRows^2)。
空间复杂度:
该算法创建了一个二维数组 ret 来存储杨辉三角的结果。在该二维数组中,第 i 行有 i+1 个元素。因此,二维数组的总大小为 O(numRows^2)。除此之外,没有额外使用其他的辅助空间。因此,总的空间复杂度也为 O(numRows^2)。
综上所述,该算法的时间复杂度和空间复杂度均为 O(numRows^2)。
c++代码
class Solution {
public:
vector<vector<int>> generate(int numRows) {
// 创建一个二维向量 ret,用于存储杨辉三角的结果,大小为 numRows 行
vector<vector<int>> ret(numRows);
// 遍历每一行
for(int i=0; i<numRows; i++)
{
// 调整当前行的大小为 i+1
ret[i].resize(i+1);
// 设置每行的首尾元素为 1
ret[i][0] = ret[i][i] = 1;
// 遍历每行的中间元素,从索引 1 到 i-1
for(int j=1; j<i; j++)
{
// 按照杨辉三角的规律,计算当前元素的值
ret[i][j] = ret[i-1][j] + ret[i-1][j-1];
}
}
// 返回杨辉三角结果
return ret;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)