119. 杨辉三角 II

leetcode 119. 杨辉三角 II

题目

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

119. 杨辉三角 II_第1张图片
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

学到的知识点

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