La realización de la oferta de Jianzhi para construir una gama de productos.

Darse cuenta de la construcción de la gama de productos

Descripción del Título

Dada una matriz A [0,1,…, n-1], construya una matriz B [0,1,…, n-1], donde los elementos de B son B [i] = A [0] A [ 1] … * A [i-1] A [i + 1] … * A [n-1]. No se puede utilizar la división. (Nota: Se estipula que B [0] = A [1] * A [2] *… * A [n-1], B [n-1] = A [0] * A [1] *… * A [n -2];)
Para el caso donde la longitud de A es 1, B no tiene sentido y no se puede construir, por lo que esta situación no existirá.

Ideas de solución

Dado que la multiplicación no se puede usar para analizar el problema, podemos dividir el producto en dos términos. cual es:

C [i] = A [0] * A [1] *… * A [i-1]
D [i] = A [i + 1] A [n-1]
B [i] = C [i] * D [i]
Calculemos C [i] primero, usando inducción matemática:

C [0] = 1
C [1] = A [0]
C [2] = A [0] * A [1]
C [3] = A [0] * A [1] * A [2]

nosotros La regla se puede dibujar: C [i] = C [i-1] * A [i -1] (i> = 1)
Seguimos usando la inducción matemática para calcular D [i]:

D [n-1] = 1
D [n-2] = A [n -1]
D [n-3] = A [n-1] * A [n-2]
Podemos dibujar la ley: D [i ] = D [i + 1] * A [i + 1] (i <= n-2)

Esta pregunta está escrita en lenguaje java de la siguiente manera:

import java.util.ArrayList;
public class Solution {
    
    
    public int[] multiply(int[] A) {
    
    
        if (A == null || A.length <= 0) {
    
    
            return null;
        }
 
        int[] C = new int[A.length];
        C[0] = 1;
        for (int i = 1; i < C.length; i++) {
    
    
            C[i] = C[i - 1] * A[i - 1];
        }
 
        int[] D = new int[A.length];
        D[D.length - 1] = 1;
        for (int i = D.length - 2; i >= 0; i--) {
    
    
            D[i] = D[i + 1] * A[i + 1];
        }
 
        int[] result = new int[A.length];
        for (int i = 0; i < result.length; i++) {
    
    
            result[i] = C[i] * D[i];
        }
        return result;
    }
 
}

Supongo que te gusta

Origin blog.csdn.net/as1490047935/article/details/110246105
Recomendado
Clasificación