119. 杨辉三角2(Python)

题目

难度:★★☆☆☆
类型:数组

给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。

在杨辉三角中,每个数是它左上方和右上方的数的和。

示例

输入: 3
输出: [1,3,3,1]
进阶:

你可以优化你的算法到 O(k) 空间复杂度吗?

解答

这道题需要知道杨辉三角的递推公式,在杨辉三角中第n行m列元素应该为:

C(n-1,m-1) = (n-1)!/[(m-1)!(n-m)!]

因此第n行m+1个元素(prev)与第n行m列元素(next)之间的关系为:

C(n-1,m) = [m / (n-m+1)] * C(n-1,m-1),即:next = [m / (n-m+1)] * prev

class Solution:
    def getRow(self, rowIndex):
        a=[]
        b=1
        for i in range(rowIndex+1):
            a.append(int(b));
            b=b*(rowIndex-i)/(i+1)
        return a

如有疑问或建议,欢迎评论区留言~

你可能感兴趣的:(119. 杨辉三角2(Python))