我正在努力解决问题Pascal's Triangle - LeetCode
给定一个非负整数numRows,生成Pascal三角形的第一个numRows。
在帕斯卡三角形中,每个数字都是它正上方两个数字的和。
例子:

Input: 5
Output:
[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]

我的解决方案:
class Solution:
    def __init__(self):
        self.res = [[]]
    def generate(self, numRows: int) -> 'List[List[int]]':
        #base case
        if numRows == None: return None
        if numRows == 0: return None
        pt = []
        for i in range(1, numRows+1):
            row = [1] * i
            pt.append(row)
        if numRows <=2: return pt

        #recur relations
        for i in range(2, numRows): #start from row  3
            for j in range(1, len(pt[i])-1):#column,
                #logging.debug(f"i:{i}, i-1:{i-1}, j:{j}, j-1:{j-1}")
                pt[i][j] = pt[i-1][j-1] + pt[i-1][j]
        return pt

不幸的是,未能通过leetcodes的测试用例:
numRows=0,应为[],但输出为None。
我曾经仔细考虑过,如果数字是0,这意味着行不存在,而不是退出一行,而是零元素。
numRow==0与numRow=None相同,与my_salary=0(自由工作)和my_salary==None(无工作)不同
很明显,工资可以是负数,但在我们应该花费数年时间把一张照片渲染成一个后门的情况下,不能对当前的技术产生负面影响。
如何理解默认设置numRows = 0而获取[]

最佳答案

在您的示例中,有一个外部列表包围了所有数字的内部列表(行)即使没有行,外部列表也将始终存在。它总是一个包含numRows元素的列表,所以如果numRows == 0,它就是一个包含0个元素的列表。
基本上只要在开始时删除两个if numRows ==检查,它就应该通过测试用例。

09-20 22:37