Угловые случаи для создания треугольника Паскаля

#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 == проверки в начале, и он должен пройти тестовый пример.