[LeetCode]PASCAL Triangle系列
今天的练习题是triangle三件套:Triangle, PASCAL Triangle, PASCAL Triangle II.
PASCAL Triangle就是小学奥数中的“杨辉三角”, 存在如下关系
triangle[i+1][j+1] = triangle[i][j]+triangle[i][j+1]
即第i+1行第j+1个元素为第i行第j个元素与第j+1个元素之和
PASCAL Triangle的题目要求:输出PASCAL Triangle的前numRows行
Given numRows, generate the first numRows of Pascal's triangle.
For example, given numRows = 5,
Return[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ]
根据生成规则,一个vector指向当前行,一个vector指向上一行,注意边界位置的下标不要越界

1 class Solution { 2 public: 3 vector<vector<int> > generate(int numRows) { 4 // IMPORTANT: Please reset any member data you declared, as 5 // the same Solution instance will be reused for each test case. 6 7 vector<vector<int>> triangle; 8 if(numRows<1) 9 return triangle; 10 11 vector<int> prev(1, 1); // [1] 12 vector<int> cur; 13 triangle.push_back(prev); 14 15 for(int i=1; i<numRows; ++i) 16 { 17 for(int j=0; j<i+1; ++j) 18 { 19 int left = j>0?prev[j-1]:0; //注意下标为0的位置 20 int right = j<i?prev[j]:0; //注意下标为i的位置 21 cur.push_back(left+right); 22 } 23 triangle.push_back(cur); 24 prev = cur; 25 cur.clear(); 26 } 27 28 return triangle; 29 } 30 };
----------------------------------------------------
PASCAL Triangle II
与上一题类似,输出第rowIndex行PASCAL Triangle.
N行的三角形,注意rowIndex的取值范围为[0, N-1]
原题
Given an index k, return the kth row of the Pascal's triangle.
For example, given k = 3,
Return [1,3,3,1]
.
代码

1 class Solution { 2 public: 3 vector<int> getRow(int rowIndex) { 4 // IMPORTANT: Please reset any member data you declared, as 5 // the same Solution instance will be reused for each test case. 6 vector<int> prev(1, 1); 7 8 if(rowIndex<1) 9 return prev; 10 11 vector<int> row; 12 for(int i=1; i<rowIndex+1; ++i) 13 { 14 for(int j=0; j<i+1; ++j) 15 { 16 int left = j>0?prev[j-1]:0; 17 int right = j<i?prev[j]:0; 18 row.push_back(left+right); 19 } 20 prev = row; 21 row.clear(); 22 } 23 24 return prev; 25 } 26 };
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 开发的设计和重构,为开发效率服务
· 从零开始开发一个 MCP Server!
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时