Функция вычисления максимальной суммы подмассива с ограничением на длину

Go Сложный functions

Задача «Функция вычисления максимальной суммы подмассива с ограничением на длину»

Напишите функцию MaxSubarraySumWithLimit(nums []int, k int) int, которая принимает целочисленный массив nums и целое число k (1 ≤ k ≤ len(nums)). Функция должна вернуть максимальную сумму непрерывного подмассива длины не более k. Если массив пуст, вернуть 0. Реализуйте алгоритм с временной сложностью O(n).

Формат ввода

На вход подаются два числа: n (длина массива, 0 ≤ n ≤ 10^5) и k (1 ≤ k ≤ n). Затем n целых чисел — элементы массива (-10^9 ≤ nums[i] ≤ 10^9).

Формат вывода

Одно целое число — максимальная сумма подмассива длины не более k.

Примеры

Пример 1

ВВОД
5 3 1 2 3 4 5
ВЫВОД
12

Пример 2

ВВОД
4 2 -1 -2 -3 -4
ВЫВОД
-1

Пример 3

ВВОД
7 1 2 3 4 5 -1 6
ВЫВОД
6

Пример 4

ВВОД
6 4 2 -1 3 4 -2 1
ВЫВОД
8

Пример 5

ВВОД
3 -5 10 20
ВЫВОД
15
main.go