238. Producto de una matriz distinta de sí misma.
Dada una matriz de números enteros nums
, devuelve la respuesta de la matriz, que answer[i]
es igual al producto de todos los elementos nums
exceptonums[i]
.
Los datos del título garantizan quenums
los productos de todos los elementos de prefijo y sufijos de cualquier elemento de la matriz estén dentro del rango de enteros de 32 bits .
**No utilice división** y O(*n*)
complete este problema dentro de la complejidad del tiempo.
Ejemplo 1:
输入: nums = [1,2,3,4]
输出: [24,12,8,6]
Ejemplo 2:
输入: nums = [-1,1,0,-3,3]
输出: [0,0,9,0,0]
pista:
2 <= nums.length <= 105
-30 <= nums[i] <= 30
- Asegúrese de que
nums
el producto de todos los elementos de prefijo y sufijos de cualquier elemento de la matriz esté dentro del rango de enteros de 32 bits.
Soluciones
programación dinámica
- Primero
answer
almacene el producto parcial izquierdo en la matriz de resultados - Luego
answer
almacene la parte correcta del producto en la matriz de resultados.
Subíndice (índice) | 0 | 1 | 2 | 3 |
---|---|---|---|---|
matriz original | 1 | 2 | 3 | 4 |
producto de piezas izquierdas | 1 | 1 | 1 * 2 | 1*2*3 |
producto de la parte derecha | 2*3*4 | 3*4 | 4 | 1 |
Resultado (multiplica las partes izquierda y derecha) | 1*2*3*4 | 1*3*4 | 1*2*4 | 1*2*3*1 |
Código
var productExceptSelf = function(nums) {
let answer=[];
let leftPart=1,rightPart=1;
for(let index=0;index<nums.length;index++){
answer[index]=leftPart;
leftPart*=nums[index];
}
for(let index=nums.length-1;index>0;index--){
rightPart*=nums[index];
answer[index-1]*=rightPart;
}
return answer;
};