119. 杨辉三角 II

leetcode 119. 杨辉三角 II

题目

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

img

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


示例:

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


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

解题

class Solution(object):
    def getRow(self, rowIndex):
        """
        :type rowIndex: int
        :rtype: List[int]
        """
        # 1 2 行特殊
        if row_index == 0:              # 第一行
            return [1]
        if row_index == 1:              # 第二行
            return [1, 1]
        
        # 第三行开始
        tmp = []
        pre_row = [1, 1]                # 前一行
        for i in range(2, row_index+1): # 第 2 行 ~ 第 k 行
            # per row
            tmp.append(1)                   # 每行第一个数是 1
            for pre_idx  in range(i - 1):   # 求中间的数的循环次数: 0 ~ i-2 (除掉第一个和最后一个)
                tmp.append( pre_row[pre_idx] + pre_row[pre_idx+1] ) # 中间的每个数是它左上方和右上方的数的和
            tmp.append(1)                   # 每行最后一个数是 1

            pre_row = tmp
            tmp = []
        return pre_row

学到的知识点

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。