Função para calcular a soma máxima de um subarray com limite de comprimento

Go Hard functions

Tarefa «Função para calcular a soma máxima de um subarray com limite de comprimento»

Escreva uma função MaxSubarraySumWithLimit(nums []int, k int) int, que recebe um array de inteiros nums e um inteiro k (1 ≤ k ≤ len(nums)). A função deve retornar a soma máxima de um subarray contínuo de comprimento não superior a k. Se o array estiver vazio, retorne 0. Implemente um algoritmo com complexidade de tempo O(n).

Formato de Entrada

Na entrada são fornecidos dois números: n (comprimento do array, 0 ≤ n ≤ 10^5) e k (1 ≤ k ≤ n). Em seguida, n números inteiros — os elementos do array (-10^9 ≤ nums[i] ≤ 10^9).

Formato de Saída

Um único número inteiro — a soma máxima do subarray de comprimento não superior a k.

Exemplos

Exemplo 1

ENTRADA
5 3 1 2 3 4 5
SAÍDA
12

Exemplo 2

ENTRADA
4 2 -1 -2 -3 -4
SAÍDA
-1

Exemplo 3

ENTRADA
7 1 2 3 4 5 -1 6
SAÍDA
6

Exemplo 4

ENTRADA
6 4 2 -1 3 4 -2 1
SAÍDA
8

Exemplo 5

ENTRADA
3 -5 10 20
SAÍDA
15
main.go