Dada una matriz A [0,1, ..., n-1], construya una matriz B [0,1, ..., n-1], donde el elemento B [i] = A [ 0] * A [1] * ... * A [i-1] * A [i + 1] * ... * A [n-1]. No puedes usar la división. (Nota: Disposición B [0] = A [1] * A [2] * ... * A [n-1], B [n-1] = A [0] * A [1] * ... * A [n-2];)
clase Solución { public : vector < int > multiply ( const vector < int > & A) { int n = A.size (); vector < int > B1 (n, 1 ); vector < int > B2 (n, 1 ); vector < int > B (n, 1 ); para ( int i = 1 ; i <n; ++ i) { B1 [i] = B1 [i- 1 ] * A [i- 1 ]; } para ( int i = n- 2 ; i> = 0 ; - i) { B2 [i] = B2 [i + 1 ] * A [i + 1 ]; } para ( int i = 0 ; i <n; i ++ ) { B [i] = B1 [i] * B2 [i]; } retorno B; } };
Use dos matrices B1, B2 para guardar la suma de los productos antes y después de la posición i, y luego multiplique estas dos matrices para generar una nueva matriz para obtener la matriz del producto