给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 3 输出: [1,3,3,1]
进阶:
你可以优化你的算法到 O(k) 空间复杂度吗?
思路:
对于杨辉三角中的第n行,第m个元素,它的值其实等于C(n-1), (m-1)。
这好像是高中 二项式定理的内容,记不太清了。
所以直接套公式算就行了。
class Solution(object):
def getRow(self, rowIndex):
"""
:type rowIndex: int
:rtype: List[int]
"""
# C(n - 1,m - 1)
n = rowIndex
m = n + 1
def Calculate(n, m):
down = 1
up = 1
for i in range(1, m):
down *= i
for i in range(1, m):
up *= (n + 1 -i)
return up // down
res = list()
for i in range(1, m + 1):
res.append(Calculate(n, i))
return res