【问题标题】:The corner cases to generate a Pascal's Triangle生成帕斯卡三角形的极端案例
【发布时间】:2019-04-17 14:23:40
【问题描述】:

我正在努力解决问题Pascal's Triangle - LeetCode

给定一个非负整数numRows,生成帕斯卡三角形的第一个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 的 Testcase 没通过:

numRows = 0,预期 [] 但输出 None。

我曾经仔细考虑过,如果numRows为0,则表示该行不存在,而不是存在一行但元素为零。

numRow == 0 与 numRow = None 相同,与 my_salary = 0(空闲工作)和 my_salary ==None(无工作)不同

明确地说,工资可以是负数,但在我们应该花费数年时间将图片渲染为后坑的情况下,在当前技术下不能得到负数。

怎么能理解默认设置numRows = 0却得到[]

【问题讨论】:

  • 您的问题是什么? [] 表示没有行的三角形。 [[]] 将是一个空行的三角形。
  • 哦,是的,谢谢。 @andrew.punnett

标签: python algorithm


【解决方案1】:

在您的示例中,有一个外部列表围绕着所有内部数字列表(行)。即使没有行,这个外部列表也会一直存在。它总是一个包含numRows 元素的列表,所以如果numRows == 0,它是一个包含0 个元素的列表。

基本上只需在开头删除您的两个if numRows == 检查,它应该会通过测试用例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 2014-11-12
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多