[LeetCode 118] - 杨辉三角形(Pascal's Triangle)
问题
给出变量numRows,生成杨辉三角形的前numRows行。
例如,给出numRows=5,返回:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
初始思路
基本算法和 杨辉三角形II(Pascal's Triangle II) 的基本一致。每算完一行的值将这些值拷贝一份到vector中即可。代码如下:

1 class Solution { 2 public: 3 std::vector<std::vector<int> > generate(int numRows) 4 { 5 std::vector<std::vector<int> > result; 6 7 std::vector<int> columnInfo; 8 9 if(numRows == 0) 10 { 11 return result; 12 } 13 14 columnInfo.push_back(1); 15 result.push_back(columnInfo); 16 17 if(numRows == 1) 18 { 19 return result; 20 } 21 22 columnInfo.push_back(1); 23 24 25 for(int i = 1; i < numRows; ++i) 26 { 27 for(int j = i; j > 0; --j) 28 { 29 //第一列和最后一列永远为1,不需要进行处理 30 if(j != 0 && j != i) 31 { 32 columnInfo[j] = columnInfo[j - 1] + columnInfo[j]; 33 } 34 } 35 36 result.push_back(columnInfo); 37 //下一行开始列数相应增加,且最后一列的数字肯定是1 38 columnInfo.push_back(1); 39 40 } 41 42 return result; 43 } 44 };
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步