我正在努力解决问题Pascal's Triangle - LeetCode
给出一个非负整数 numRows ,生成Pascal三角形的第一个 numRows 。
在Pascal的三角形中,每个数字都是其正上方的两个数字的和。
示例:
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
,却得到[]
答案 0 :(得分:1)
在您的示例中,有一个外部列表围绕所有内部数字列表(行)。即使没有行,此外部列表也将始终存在。它始终是包含numRows
个元素的列表,因此,如果numRows == 0
则是包含0个元素的列表。
基本上只需删除您一开始的两项if numRows ==
检查,它就可以通过测试用例。