美文网首页
[数组]杨辉三角 II

[数组]杨辉三角 II

作者: 周闖 | 来源:发表于2020-01-23 23:58 被阅读0次

    119. 杨辉三角 II

    题目描述

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


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

    示例:

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

    解题思路

    • 方法1:
      对每一行单独处理:首、尾分别添加一个0然后对应位置求和就可以得到新的一行。
      只用设置一个列表res即可,每循环一次就覆盖res一次即可。最终循环结束,返回res即可。
    • 方法2:
      j行的数据, 应该由j - 1行的数据计算出来.
      假设j - 1行为[1,3,3,1], 那么我们前面插入一个0(j行的数据会比j-1行多一个),
      然后执行相加[0+1,1+3,3+3,3+1,1] = [1,4,6,4,1], 最后一个1保留即可.

    代码实现

    • 方法1:
    class Solution(object):
        def getRow(self, rowIndex):
            """
            :type rowIndex: int
            :rtype: List[int]
            """
            res = [1]
            if rowIndex == 0:
                return res
            for i in range(1, rowIndex + 1):
                new_row = [a + b for a, b in zip([0] + res, res + [0])]
                res = new_row
            return res
    
    • 方法2:
    class Solution(object):
        def getRow(self, rowIndex):
            """
            :type rowIndex: int
            :rtype: List[int]
            """
            res = [1]
            for i in range(1, rowIndex + 1):
                res.insert(0, 0)
                for j in range(i):
                    res[j] = res[j] + res[j + 1]
            return res
    

    相关文章

      网友评论

          本文标题:[数组]杨辉三角 II

          本文链接:https://www.haomeiwen.com/subject/fbszzctx.html