Array Max Consecutive Sum
Рядом порядка k, массива A мы назавем произвольно выбранную группу последовательных элементов, количеством k из позиции i.
Например для массива A = [2, 3, 5, 1, 6] порядка k = 2 ряды будут A = [2, 3] A = [3, 5] A = [5, 1] A = [1, 6] подмассивы.
Надо написать функцию, которая получает массив [x1, x2, x3, … xn] и возвращает максимальную сумму рядов порядка n.
Например в вышеуказанном примере мы получим 8, потому что оно наибольшое значение, которое получается когда мы слогаем элементы рядов. В нашом примере из ряда [3, 5].
function arrayMaxConsecutiveSum (input, k) {
let sum = 0;
let max = 0;
for (let i = 0; i < input.length; i++) {
sum += input[i];
if (i >= k) sum -= input[i - k];
if (sum > max) max = sum;
}
return max;
}
console.log(solution([2, 3, 5, 1, 6, 2], 2)); // 8
console.log(solution([2,4, 10, 1, 2], 2)); // 14
console.log(solution([2, 4, 10, 9, 2], 2)); // 19
console.log(solution([1, 3, 2, 4, 3], 3)); // 9
console.log(solution([5,4,1,3,2,4,3], 3)); // 10
А нужнно чтобы выводил.
console.log(solution([2, 3, 5, 1, 6, 2])); // 8
console.log(solution([2,4, 10, 1, 2])); // 14
console.log(solution([2, 4, 10, 9, 2])); // 19
console.log(solution([1, 3, 2, 4, 3])); // 9
console.log(solution([5,4,1,3,2,4,3])); // 10
Заранее скажу что код проверяет спрогромированная
система в котором уже есть тести которые проверяют все случая например для
k =2, 3
Ответы (1 шт):
Я не понял, почему функция должна вывести 8, когда нет второгo параметра.
function solution(inp, k) {
let sum = 0;
let max = 0;
for (let i = 0; i < k; i++)
max += inp[i];
sum = max;
for (let i = 0; i < inp.length - k; i++) {
sum = sum - inp[i] + inp[i + k];
if (sum > max)
max = sum;
}
return max;
}
console.log(solution([2, 3, 5, 1, 6, 2], 2)); // 8
console.log(solution([2,4, 10, 1, 2], 2)); // 14
console.log(solution([2, 4, 10, 9, 2], 2)); // 19
console.log(solution([1, 3, 2, 4, 3], 3)); // 9
Похоже, что нужна сумма, дающая максимальное среднее сложенных элементов.
function solution(inp, k) {
let sum = 0;
let max = 0;
for (let i = 0; i < k; i++)
max += inp[i];
sum = max;
for (let i = 0; i < inp.length - k; i++) {
sum = sum - inp[i] + inp[i + k];
if (sum > max)
max = sum;
}
return max;
}
function solutionMaxAvg(inp) {
let sum, avg;
let max, maxAvg;
for (let i = 2; i <= inp.length; i++) {
sum = solution(inp, i);
avg = sum / i;
if (i == 2 || avg > maxAvg) {
max = sum;
maxAvg = avg
}
}
return max;
}
console.log(solutionMaxAvg([2, 3, 5, 1, 6, 2]));
console.log(solutionMaxAvg([2,4, 10, 1, 2]));
console.log(solutionMaxAvg([2, 4, 10, 9, 2]));
console.log(solutionMaxAvg([1, 3, 2, 4, 3]));
console.log(solutionMaxAvg([5,4,1,3,2,4,3]));