Вопрос

Учитывая целое число 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