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 };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
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.