На этой неделе я столкнулся с проблемой на Leetcode, которая показывает треугольник Паскаля. Я знал заранее, как устроен треугольник Паскаля, так как изучал множество математических курсов в средней школе и колледже, поэтому я понял, как это будет выглядеть на выходе.

Проблема

Учитывая неотрицательное целое число numRows, сгенерируйте первые numRows треугольника Паскаля. На выходе будут все массивы, разделенные новыми строками.

Предположения

Целые числа должны быть неотрицательными. Входными данными является положительное целое число, а выходными данными - массив, разделенный новыми строками.

Решение

Итак, сначала я хотел покрыть первый ряд. Это всегда будет массив [1]. Я установил массив результатов в этот массив. В случае отсутствия строк результат возвращает пустой массив. Для двух строк используется цикл if, который возвращает массив, вставленный в соответствии со строкой 14. Внешний цикл for из строк 17–28 используется для перебора всех строк от n = 2 до заданного количества строк. Использование переменной last позволяет ей выводить следующую строку. Следующий цикл - отсчет от второго индекса после начальной 1, которая появляется в каждой строке. Он зацикливается до последнего индекса, который равен last.length-1. Строка 23 - очень важный шаг. Он собирается суммировать два числа сверху, чтобы ввести число во временный массив. Что parseInt позволяет мне сделать, так это преобразовать строку в целое число для числа, которое встречается в последнем индексе массива j и последнем индексе массива j + 1 и которое помещается во временный массив. После суммирования чисел последним числом, помещенным в массив, будет 1. Это позволяет визуальному эффекту показать все стороны пирамиды. При возврате результата каждая строка будет отображаться с новой строки.

Заключение

Время выполнения этого решения составляет 44 мс, быстрее, чем 97,19% онлайн-представлений JavaScript для треугольника Паскаля.
Использование памяти: 33,8 МБ, менее 100,00% от Онлайн-заявки на JavaScript для треугольника Паскаля.

Поначалу эту проблему легко визуализировать, но довольно сложно продолжать суммирование чисел, не найдя правильное число для начальной точки итерации. Из этой задачи я понял, что создание дополнительных массивов позволяет мне быть более гибким в решении проблем. Становится легко сохранить информацию об уже созданных массивах для дальнейшего использования в задаче.