Solución

@alexword
·16/3/2026TypeScript
solution.tsTypeScript
function productExceptSelf(numbers:number[]): number[] {
  numbers    = eval(numbers)
  let left_prod  = 1
  let right_prod = 1
  let result    = Array(numbers.length).fill(1)
  for(let i=0;i<numbers.length;i++){
    result[i]*=left_prod
    left_prod*=numbers[i]
  }
  for(let i=numbers.length-1;i>=0;i--){
    result[i]*=right_prod
    right_prod*=numbers[i]
  }
  return result
}

// No modificar: necesario para evaluar el resultado.
export { productExceptSelf };
2respuestas
Respuestas
2
@alexwordAutor16/3/2026editado

No se si algun programador competitivo(me refiero a que participe en concursos tipo codeforce atcoder codingame etc) llegue a ver este code y me disculpo por aplicar cosas feas de typescript/javascript en este contexto jajaj, lo utilice por mucho tiempo en codingame pero realmente en un punto olvide las formas de hacer ciertas cosas de mejor forma con javascript, por ejemplo acabe de recordar el emplear el array fill para darle un valor defecto a un array de n posiciones jaja

Dejando de lado mis disculpas jaja, realmente no se me ocurre una forma de hacerlo sin aplicar division con un solo recorrido, en teoria esta en O(n) pero no se si pueda hacerse en un solo recorrido, mmm tendria que pensar un poco mas o tal vez aprovechar algo de las instancias de javascript que me permita hacerlo jaja

@fernando_her8518/3/2026

No pasa nada Alex, la idea es practicar y esforzarse, aparte me ayudaste a atrapar un bug en el input de entrada.

Yo hice pase un rato pensando en este ejercicio y al final llegue a una solución que me pareció elegante.

Gracias por compartir!

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.
Markdown