Вопрос
Учитывая целое число rowIndex
, вернуть строку rowIndexth
(с индексом 0) треугольника Паскаля.
В треугольнике Паскаля каждое число представляет собой сумму двух чисел прямо над ним, как показано:
Пример 1:
Input: rowIndex = 3 Output: [1,3,3,1]
Пример 2:
Input: rowIndex = 0 Output: [1]
Пример 3:
Input: rowIndex = 1 Output: [1,1]
Это должно быть легко?
На прошлой неделе я решил Треугольник Паскаля, и следующим в списке был Треугольник Паскаля II. Учитывая, что у меня уже было решение первой задачи, я подумал, что это будет легко.
Напомню, что в задании «Треугольник Паскаля» нам было задано количество строк, и мы возвращали все строки «Треугольника Паскаля». Возвращаемое значение этой функции было массивом, и я подумал, вау, это действительно просто. У меня было заявление о возврате ниже:
return values;
Поэтому я просто изменил его на значение ниже, и он покажет мне строку, соответствующую индексу нужной строки.
return values[rowIndex-1];
Что ж, мысль о том, что что-то легко, и невнимательное чтение привели меня к ошибке. В текущей задаче входным значением был не номер строки, как в предыдущем, а индекс строки. Таким образом, индекс равен 0, это означает строку 1, индекс 2 означает строку 3 и т. Д. На этот раз я решил пройти через всю функцию шаг за шагом, чтобы убедиться, что на этот раз я понял все правильно.
Объявление функции изменилось, и это было важное изменение из-за использованного здесь аргумента rowIndex
.
var getRow = function (rowIndex) { .... }
Следующим важным изменением было for loop
условие, изначально я использовал numRows
, но теперь это было rowIndex
.
for (let n = 0; n < numRows; n++) {
VS
for (let n = 0; n <= rowIndex; n++) {
Есть одно изменение, которое заставляет эту функцию работать. Это действительно небольшое изменение, но оно помогает n <= rowIndex
. Наш цикл заканчивается, когда мы достигаем нашего rowIndex, поэтому <
подписывает изменения на <=
.
А теперь мне просто нужно вернуть нужный элемент, указанный в rowIndex
массива values
.
return values[rowIndex];
Код
Зацените меня и в следующих социальных сетях, я буду рад получить от вас известие! - LinkedIn, GitHub и Facebook.
Больше контента на plainenglish.io