Solución

@alexiis-dev·29/5/2026TypeScript
solution.tsTypeScript
export function maxSubarraySumAtLeastK(nums: number[], k: number): number {
  const n = nums.length;

  // 1. Prefix sum
  const prefix = new Array(n + 1);
  prefix[0] = 0;

  for (let i = 0; i < n; i++) {
    prefix[i + 1] = prefix[i] + nums[i];
  }

  // 2. Deque (guardará índices de prefix con valores crecientes)
  const deque: number[] = [];

  let result = -Infinity;

  for (let j = k; j <= n; j++) {
    const iCandidate = j - k;

    // Mantener deque con mínimos prefix
    while (
      deque.length > 0 &&
      prefix[deque[deque.length - 1]] >= prefix[iCandidate]
    ) {
      deque.pop();
    }

    deque.push(iCandidate);

    // El mejor i está en el frente
    const bestI = deque[0];

    result = Math.max(result, prefix[j] - prefix[bestI]);
  }

  return result;
}
0respuestas
Respuestas

Aún no hay respuestas

¡Sé el primero en responder!

Escribir un comentario

Recuerda ser amable. Estás comentando la solución de otra persona. Comparte tu perspectiva de forma constructiva y respetuosa.

Debes iniciar sesión para publicar un comentario.