题目描述:
给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 3 输出: [1,3,3,1]
解题思路:
观察发现。二维数组的值可分为两种情况:边界值为1,中间值 由左上加上右上。题目k的取值范围[0,33], 所以先求出行数为k+1的二维矩阵,即[0, 1, 2, ..., k] ,再返回第k行即可。
C++代码:
class Solution {
public:
vector<int> getRow(int rowIndex) {
vector<vector<int>> YangAngle(rowIndex+1);
for (int i = 0; i < rowIndex+1; i++){
YangAngle[i].resize(i+1); // 定义每行的大小
YangAngle[i][0] = 1; // 前面边界
YangAngle[i][i] = 1; // 后面
}
for (int i = 2; i < rowIndex+1; i++)
for (int j = 1; j < YangAngle[i].size()-1; j++){
YangAngle[i][j] = YangAngle[i-1][j-1] + YangAngle[i-1][j];
}
vector<int> temp = YangAngle[rowIndex];
return temp;
}
};
执行用时: 0 ms, 在Pascal's Triangle II的C++提交中击败了100.00% 的用户