How to find three consecutive numbers with the largest sum in a list of integers in Python

1 Answer

0 votes
from typing import NamedTuple


class Result(NamedTuple):
    """Stores the result of the search."""
    max_sum: int
    numbers: list[int]


def find_max_sum_of_three(
    numbers: list[int],
    window_size: int
) -> Result:
    """
    Find the consecutive numbers with the largest sum.

    Args:
        numbers: Input list of integers.
        window_size: Number of consecutive elements to examine.

    Returns:
        Result containing:
            - max_sum: largest sum found
            - numbers: matching consecutive numbers

    Raises:
        ValueError: If window_size is invalid.
    """
    if window_size <= 0:
        raise ValueError("window_size must be greater than 0")

    if len(numbers) < window_size:
        raise ValueError(
            "List must contain at least window_size elements"
        )

    # Calculate the first window sum.
    current_sum = sum(numbers[:window_size])

    max_sum = current_sum
    best_index = 0

    # Slide the window through the list.
    for i in range(window_size, len(numbers)):
        current_sum += numbers[i]
        current_sum -= numbers[i - window_size]

        if current_sum > max_sum:
            max_sum = current_sum
            best_index = i - window_size + 1

    return Result(
        max_sum = max_sum,
        numbers = numbers[best_index:best_index + window_size]
    )


# Example usage
numbers = [4, 2, 0, 8, 7, 5, 1, 3, 9, 6]

result = find_max_sum_of_three(numbers, 3)

print(f"Largest sum: {result.max_sum}")
print("Numbers:", *result.numbers)


'''
run:

Largest sum: 20
Numbers: 8 7 5

'''

 



answered Oct 30 by avibootz

Related questions

...