https://www.lintcode.com/problem/sparse-matrix-multiplication/description
给定两个稀疏矩阵 A A A和 B B B,分别是 m × n m\times n m×n和 n × l n\times l n×l,求它们的乘积 A B AB AB。
直接按照矩阵乘法的定义去算即可。枚举 A A A的每一项,计算其在 A B AB AB中的贡献( A [ i ] [ j ] A[i][j] A[i][j]对于 A B AB AB的贡献只在于 A B AB AB的下标为 j j j的行),当遇到 0 0 0的时候跳过。代码如下:
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) { // write your code here int[][] C = new int[A.length][B[0].length]; for (int i = 0; i < A.length; i++) { for (int j = 0; j < A[0].length; j++) { // 遇到0则跳过 if (A[i][j] != 0) { for (int k = 0; k < B[0].length; k++) { C[i][k] += A[i][j] * B[j][k]; } } } } return C; } }时间复杂度 O ( m n l ) O(mnl) O(mnl)(实际上取决于 A A A的稀疏程度),空间 O ( 1 ) O(1) O(1)。
