Solución

@fernando_her85·11/5/2026TypeScript
solution.tsTypeScript
function subarraySumaObjetivo(nums: number[], target: number): number[] {
  
  const prefixIndex = new Map<number, number>();
  let prefixSum = 0;

  
  let bestStart = -1;
  let bestEnd = -1;

  
  prefixIndex.set(0, -1);

  for (let i = 0; i < nums.length; i++) {
    prefixSum += nums[i];

  
    const needed = prefixSum - target;

    if (prefixIndex.has(needed)) {
      const start = (prefixIndex.get(needed) as number) + 1;
      const end = i;

  
      if (bestStart === -1 || start < bestStart || (start === bestStart && end < bestEnd)) {
        bestStart = start;
        bestEnd = end;
      }
    }

  
    if (!prefixIndex.has(prefixSum)) {
      prefixIndex.set(prefixSum, i);
    }
  }

  if (bestStart === -1) {
    return [-1, -1];
  }

  return [bestStart, bestEnd];
}

// No modificar: necesario para evaluar el resultado.
export { subarraySumaObjetivo };
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.