您可以假设A的列数等于B的行数。
样例1
Input: [[1,0,0],[-1,0,3]] [[7,0,0],[0,0,0],[0,0,1]] Output: [[7,0,0],[-7,0,3]] Explanation: A = [ [ 1, 0, 0], [-1, 0, 3] ] B = [ [ 7, 0, 0 ], [ 0, 0, 0 ], [ 0, 0, 1 ] ] | 1 0 0 | | 7 0 0 | | 7 0 0 | AB = | -1 0 3 | x | 0 0 0 | = | -7 0 3 | | 0 0 1 |
复制代码样例2
Input:[[1,0],[0,1]] [[0,1],[1,0]] Output: [[0,1],[1,0]]
复制代码思路
矩阵乘法的实现:一个m行n列的矩阵A,与一个n行p列的矩阵B可以相乘,得到的结果AB是一个m行p列的矩阵,其中的第i行第j列位置上的数AB(i,j)为,矩阵A第i行上的n个数与矩阵B第j列上的n个数一一对应相乘后,所得到的n个乘积之和。直接模拟即可。
复杂度分析
空间复杂度O(n^2)
时间复杂度O(n^3)
时间复杂度O(n^3)
public class Solution { /** * @param A: a sparse matrix * @param B: a sparse matrix * @return: the result of A * B */ public int[][] multiply(int[][] A, int[][] B) { int rowA = A.length, columnA = A[0].length; int rowB = B.length, columnB = B[0].length; // AB为 rowA * columnB 大小的矩阵 int[][] AB = new int [rowA][columnB]; for (int i = 0; i < rowA; i++){ for (int j = 0; j < columnB; j++){ // 求出每一项 int sum = 0; for (int k = 0; k < columnA; k++){ sum += A[i][k] * B[k][j]; } AB[i][j] = sum; } } return AB; } }
复制代码https://developer.aliyun.com/article/779367?spm=5176.8068049.0.0.55746d19aAc7KO&groupCode=ai