Función para calcular la suma máxima de un subarreglo con restricción de longitud

Go Hard functions

Tarea «Función para calcular la suma máxima de un subarreglo con restricción de longitud»

Escriba la función MaxSubarraySumWithLimit(nums []int, k int) int, que recibe un arreglo de enteros nums y un entero k (1 ≤ k ≤ len(nums)). La función debe devolver la suma máxima de un subarreglo continuo de longitud no mayor a k. Si el arreglo está vacío, devolver 0. Implemente un algoritmo con complejidad temporal O(n).

Formato de entrada

En la entrada se proporcionan dos números: n (longitud del arreglo, 0 ≤ n ≤ 10^5) y k (1 ≤ k ≤ n). Luego n números enteros — los elementos del arreglo (-10^9 ≤ nums[i] ≤ 10^9).

Formato de salida

Un único número entero — la suma máxima del subarreglo de longitud no mayor a k.

Ejemplos

Ejemplo 1

ENTRADA
5 3 1 2 3 4 5
SALIDA
12

Ejemplo 2

ENTRADA
4 2 -1 -2 -3 -4
SALIDA
-1

Ejemplo 3

ENTRADA
7 1 2 3 4 5 -1 6
SALIDA
6

Ejemplo 4

ENTRADA
6 4 2 -1 3 4 -2 1
SALIDA
8

Ejemplo 5

ENTRADA
3 -5 10 20
SALIDA
15
main.go