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

1 Answer

0 votes
/**
 * Result returned by findMaxSumOfThree().
 */
interface MaxSumResult {
    maxSum: number;
    startIndex: number;
    numbers: number[];
}

/**
 * Finds the consecutive numbers with the largest sum.
 *
 * @param numbers Array of integers.
 * @param windowSize Number of consecutive values to examine.
 * @returns Information about the largest-sum sequence.
 */
function findMaxSumOfThree(
    numbers: number[],
    windowSize: number
): MaxSumResult {

    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: number = 0;

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

    let maxSum: number = currentSum;
    let bestStartIndex: number = 0;

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

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

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

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

// Example usage
const result: MaxSumResult = 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
edited Oct 30 by avibootz

Related questions

...