leetcode-119 | 杨辉三角II

119. 杨辉三角II

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

例如
输入: 4
输出:
[1,4,6,4,1]

思考

不难发现,是从0开始的。
其实这个问题我们在118中已经解决了,因为当时我用的是一个base的列表,然后直接返回该列表就可以了。我们不妨修改一下上一题的程序。

class Solution(object):
    def getRow(self, rowIndex):
        """
        :type rowIndex: int
        :rtype: List[int]
        """
        numRows = 1 + rowIndex
        #基础情况
        if numRows == 0:
            return []
        elif numRows == 1:
            return [1]
        elif numRows == 2:
            return [1,1]

        #其他情况,以[1,1]为基础计算
        base = [1,1]
        #不妨假设是3,此时,中间计算一次,故而从第三行开始,每一行计算的次数是:1 2 3 4 5 依次增加
        #而需要计算的行数row = numrows - 2
        row = numRows - 2
        i = 1
        while i <= row:
            #按照行计算,循环的次数一次增加
            #第一行计算一次,第二行计算两次,刚好对应
            j = 0
            temp = [1]
            while j < i:
                ele = base[j] + base[j+1]
                temp.append(ele)
                j+=1
            temp.append(1)
            base = temp
            i+=1

        return base

结果:

执行用时 : 16 ms, 在Pascal’s Triangle II的Python提交中击败了98.96% 的用户
内存消耗 : 11.6 MB, 在Pascal’s Triangle II的Python提交中击败了30.99% 的用户

提交时间状态执行用时内存消耗语言
几秒前通过16 ms11.6MBpython

   Reprint policy


《leetcode-119 | 杨辉三角II》 by 梦否 is licensed under a Creative Commons Attribution 4.0 International License
 Previous
leetcode-442 | 数组中重复的数据 leetcode-442 | 数组中重复的数据
442. 数组中重复的数据给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。 找到所有出现两次的元素。 你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗? 例如输
2019-06-02
Next 
leetcode-118 | 杨辉三角 leetcode-118 | 杨辉三角
118. 杨辉三角给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 在杨辉三角中,每个数是它左上方和右上方的数的和。 例如输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,
2019-06-01
  TOC