[LeetCode] [Notas de estudio] 238. El producto de matrices distintas a sí misma

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 quenums 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

  1. Primero answeralmacene el producto parcial izquierdo en la matriz de resultados
  2. Luego answeralmacene la parte correcta del producto en la matriz de resultados.

inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

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

Supongo que te gusta

Origin blog.csdn.net/weixin_45944495/article/details/128323779
Recomendado
Clasificación