题目
Given a non-negative index k where k ≤ 33, return the kthkth index row of the Pascal’s triangle.
Note that the row index starts from 0.

In Pascal’s triangle, each number is the sum of the two numbers directly above it.
Example:
Input: 3
Output: [1,3,3,1]
Follow up:
Could you optimize your algorithm to use only O(k) extra space?
代码
def getRow(rowIndex):
"""
:type rowIndex: int
:rtype: List[int]
"""
# 整个三角形左右是对称的,上一行左边加0,上一行右边加0,两个加起来就是下一行
row = [1]
print([0]+row)
print(row+[0])
for _ in range(rowIndex):
row = [x + y for x, y in zip([0] + row, row + [0])]
print(row)
return row
def getRow2(rowIndex):
"""
:type rowIndex: int
:rtype: List[int]
"""
cur = [1] * (rowIndex + 1)
for i in range(1, rowIndex + 1):# 1234
print("i==",i)
for j in range(i - 1, 0, -1):# 2 0 -1
print("j==",j)
cur[j] = cur[j] + cur[j - 1]
print(cur)
return cur
def getRow3(rowIndex):
res=[[1]]
for i in range(1,rowIndex+1):
res+=[map(lambda x,y:x+y,res[-1]+[0],[0]+res[-1])]
return res[rowIndex]

本文介绍了一种高效算法来求解帕斯卡三角形的第K行,该算法仅使用O(k)的额外空间。通过三种不同实现方式详细展示了如何通过优化减少空间复杂度。
878

被折叠的 条评论
为什么被折叠?



