как это работает для l oop точно - PullRequest
0 голосов
/ 03 февраля 2020
function addNum(arr, n) {
    let max = -Infinity
    for(let i = 0; i <= arr.length - n; i++) {
        let temp = 0
        for(let j = 0; j < n; j++) {
            temp += arr[i + j]
        }
        if(temp > max) {
            max = temp
        }
    }
    return max
}

Вывод: 15

Это работает

Мой вопрос, как работает строка 6? temp + = arr [i + j]. Почему не 2 + 2 = 4, тогда 2 + 3 = 6? скорее это 2 + 3 = 5 5 + 4 = 9 et c. Я думал, что вся идея в том, что это будет l oop n раз, и я буду добавлять i + j каждые l oop? Извините, если я затрудняюсь, не знаю, как объяснить

1 Ответ

0 голосов
/ 03 февраля 2020

Похоже, вы хотите подмножество суммы и из этого максимального значения.

Подмножество содержит n частей, а вложенное для l oop вычисляет сумму.

Например, если у вас есть n = 3 и массив

1 2 3 4 5 6 7 8 9  values
0 1 2 3 4 5 6 7 8  indices i
                   j = 0 ... 2

1 2 3              indices 0 + 0, 0 + 1, 0 + 2
  2 3 4            indices 1 + 0, 1 + 1, 1 + 2
    3 4 5          :
      4 5 6        :
        5 6 7      :
          6 7 8    :
            7 8 9  indices 6 + 0, 6 + 1, 6 + 2

, и вы получите для каждой строки подмножество суммы для трех элементов.

...