Solución
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