问题描述:
给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 3
输出: [1,3,3,1]
进阶:
你可以优化你的算法到 O(k) 空间复杂度吗?
解决方案:
- class Solution {
- public:
- vector<int> getRow(int rowIndex) {
- vector<vector<int> > result(34);
- for (int i = 0; i<34; i++)
- {
- for (int j = i; j >= 0; j--)
- {
- if (i == 0)
- result[i].push_back(1);
- else if (i == 1)
- {
- result[i].push_back(1);
- result[i].push_back(1);
- break;
- }
- else if (j == i)
- {
- result[i].push_back(1);
- }
- else if (j == 0)
- {
- result[i].push_back(1);
- }
- else
- {
- result[i].push_back(result[i - 1][j - 1] + result[i - 1][j]);
- }
- }
- }
- return result[rowIndex];
- }
- };
总结:计划后期优化容器中元素的计算方法来提高程序运行的时间复杂度和空间复杂度。