题目要求
给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。- 示例 1:
输入: rowIndex = 3
输出: [1,3,3,1] - 示例 2:
输入: rowIndex = 0
输出: [1] - 示例 3:
输入: rowIndex = 1
输出: [1,1]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/pascals-triangle-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解法
动态规划
与118题一样,只不过答案更加简化,只需要给出目标行数的数组即可。
所以可以不用二维数组,而直接使用两个数组来交替换行即可。
class Solution {
public:
vector<int> getRow(int rowIndex) {
vector<int> vCur = {1, 1};
vector<int> vPre = {1};
if (rowIndex == 0)
{
return vPre;
}
if (rowIndex == 1)
{
return vCur;
}
for (int i = 2; i <= rowIndex; i++)
{
vPre.resize(i);
vPre = vCur;
vCur.resize(i+1);
vCur[0] = vCur[i] = 1;
for (int j = 1; j < i; j++)
{
vCur[j] = vPre[j-1]+vPre[j];
}
}
return vCur;
}
};
复杂度分析
时间复杂度:
O
(
r
o
w
I
n
d
e
x
)
O(rowIndex)
O(rowIndex)
空间复杂度:
O
(
1
)
O(1)
O(1)