Producto de lista excepto mismo
Este problema consiste en hacer un vector el cual cada elemento debe ser el resultado de la multiplicación de todos los elementos de un vector excepto el del índice el cual va a ocupar
Primero se me ocurrió hacer la multiplicación de todos los elementos por cada iteración y saltar cuando ocurra el índice, después asignar el elemento al índice indicado, pero esto es bastante lento pues tendría una complejidad de tiempo cuadrada y se repiten muchísimas operaciones
Esta solución hace dos vectores que tienen el resultado de todas las multiplicaciones de cada elemento, en la primera es con cada elemento a la derecha y la segunda es cada elemento a la izquierda
Y al final se multiplican el elemento de cada índice de la izquierda con la derecha.
Solución
class Solution(object):
def productExceptSelf(self, nums):
izq=[1]
total=len(nums)
der=[1 for _ in range(total)]
for i in range(1,total):
izq.append(izq[i-1]*nums[i-1])
der[total-(i+1)]=(der[total-(i)]*nums[total-(i)])
res=[]
for i in range(total):
res.append(izq[i]*der[i])
return res