Sparse Matrix Multiplication

update Sep 16 2018, 9:58

LeetCodearrow-up-right

Given two sparse matrices A and B, return the result of AB.

You may assume that A's column number is equal to B's row number.

Example:

Input:

A = [
  [ 1, 0, 0],
  [-1, 0, 3]
]

B = [
  [ 7, 0, 0 ],
  [ 0, 0, 0 ],
  [ 0, 0, 1 ]
]

Output:

     |  1 0 0 |   | 7 0 0 |   |  7 0 0 |
AB = | -1 0 3 | x | 0 0 0 | = | -7 0 3 |
                  | 0 0 1 |

Basic Idea:

如果按照正常求矩阵点积的方法一个元素一个元素计算的话,需要计算AB中所有对应位置元素的乘积,但是由于给定矩阵是sparse的,会有很多 0,我们注意到对于 A 中的一个 0,我们就无需计算和该 0 有关的乘积,也就是对应B中的一个row都无需和该A中的0相乘。利用这条性质可以简化时间。

Java Code: