您的位置:首页 > 其它

LeetCode Pascal's Triangle II

2016-02-29 19:17 302 查看

LeetCode解题之Pascal’s Triangle II

原题

用O(k)的空间得到杨辉三角第k行的数值。

注意点:

从0开始计算行数,即第0行为[1]

例子:

输入: k = 3

输出: [1,3,3,1]

[code][
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]


解题思路

现在要考虑的是在 Pascal’s Triangle 的基础上节约空间,我们可以知道第k行需要(k+1)的空间,且下一行占用的长度都比上一行长,所以在计算下一行的值时适合从后往前计算。

AC源码

[code]class Solution(object):
    def getRow(self, rowIndex):
        """
        :type rowIndex: int
        :rtype: List[int]
        """
        result = [1] * (rowIndex + 1)
        for i in range(2, rowIndex + 1):
            for j in range(1, i):
                result[i - j] += result[i - j - 1]
        return result

if __name__ == "__main__":
    assert Solution().getRow(3) == [1, 3, 3, 1]


欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: