How to find three consecutive numbers with the largest sum in an array of integers in JavaScript

1 Answer

0 votes
/**
 * Finds the consecutive numbers with the largest sum.
 *
 * @param {number[]} numbers - Input array of integers.
 * @param {number} windowSize - Number of consecutive values to examine.
 * @returns {{
 *   maxSum: number,
 *   startIndex: number,
 *   numbers: number[]
 * }}
 */
function findMaxSumOfThree(numbers, windowSize) {
    if (!Array.isArray(numbers)) {
        throw new TypeError("numbers must be an array");
    }

    if (windowSize < 1 || windowSize > numbers.length) {
        throw new RangeError(
            "windowSize must be between 1 and the array length"
        );
    }

    // Calculate the first window sum
    let currentSum = 0;

    for (let i = 0; i < windowSize; i++) {
        currentSum += numbers[i];
    }

    let maxSum = currentSum;
    let bestStartIndex = 0;

    // Slide the window through the array
    for (let i = windowSize; i < numbers.length; i++) {
        currentSum += numbers[i];                 // add incoming value
        currentSum -= numbers[i - windowSize];   // remove outgoing value

        if (currentSum > maxSum) {
            maxSum = currentSum;
            bestStartIndex = i - windowSize + 1;
        }
    }

    return {
        maxSum,
        startIndex: bestStartIndex,
        numbers: numbers.slice(
            bestStartIndex,
            bestStartIndex + windowSize
        )
    };
}

// Example data
const numbers = [4, 2, 0, 8, 7, 5, 1, 3, 9, 6];

// Example usage
const result = findMaxSumOfThree(numbers, 3);

console.log(`Largest sum: ${result.maxSum}`);
console.log(`Numbers: ${result.numbers.join(" ")}`);


/*
run:

Largest sum: 20
Numbers: 8 7 5

*/

 



answered Oct 30 by avibootz

Related questions

...