给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 3
输出: [1,3,3,1]
进阶:
你可以优化你的算法到 O(k) 空间复杂度吗?
代码实现
C++:
class Solution {
public:
vector<int> getRow(int rowIndex) {
vector<int> row = {1};
vector<int> newRow;
while(row.size() <= rowIndex){
newRow = {};
newRow.push_back(1);
for(int i=0; i<row.size()-1; i++){
newRow.push_back(row[i]+row[i+1]);
}
newRow.push_back(1);//添加每行的末尾元素
row = newRow;
}
return row;
}
};
Python:
class Solution(object):
def getRow(self, rowIndex):
"""
:type rowIndex: int
:rtype: List[int]
"""
if rowIndex == 0:
return [1]
res = []
for i in range(rowIndex):
res = [1] + [x+y for x, y in zip(res[0:], res[1:])] + [1]
return res