#python #algorithm
#python #алгоритм
Вопрос:
Я предпринимаю усилия для решения проблемы треугольника Паскаля — LeetCode
Учитывая неотрицательные целые числа, сгенерируйте первые числа треугольника Паскаля.
В треугольнике Паскаля каждое число является суммой двух чисел непосредственно над ним.
Пример:
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, ожидается [], но не выводится.
Я когда-то тщательно продумал заранее, если numRows равно 0, это означает, что строка не существует, а не выходит из одной строки, но с нулевым элементом.
numRow == 0 совпадает с numRow = None, которые отличаются от my_salary = 0 (бесплатная работа) и my_salary ==None (нет работы)
Проще говоря, зарплата может быть отрицательной, но не может получить отрицательную строку при нынешних технологиях, когда нам потребовались годы, чтобы сделать изображение дырой.
Как можно понять настройку по умолчанию numRows = 0
, но получить []
Комментарии:
1. В чем ваш вопрос? [] указывает на треугольник без строк. [[]] будет треугольником с одной пустой строкой.
2. о, да, спасибо. @andrew.punnett
Ответ №1:
В вашем примере есть внешний список, который окружает все внутренние списки (строки) чисел. Этот внешний список всегда будет там, даже если в нем нет строк. Это всегда список с numRows
элементами, поэтому, если numRows == 0
, это список с 0 элементами.
По сути, просто удалите обе ваши if numRows ==
проверки в начале, и он должен пройти тестовый пример.