File tree Expand file tree Collapse file tree 1 file changed +87
-0
lines changed
src/main/java/com/leetcode/arrays Expand file tree Collapse file tree 1 file changed +87
-0
lines changed Original file line number Diff line number Diff line change 1+ package com .leetcode .arrays ;
2+
3+ import java .util .Arrays ;
4+
5+ import static org .junit .jupiter .api .Assertions .assertEquals ;
6+
7+ /**
8+ * Level: Medium
9+ * Link: https://leetcode.com/problems/sparse-matrix-multiplication/
10+ * Description:
11+ * Given two sparse matrices A and B, return the result of AB.
12+ *
13+ * You may assume that A's column number is equal to B's row number.
14+ *
15+ * Example:
16+ *
17+ * Input:
18+ *
19+ * A = [
20+ * [ 1, 0, 0],
21+ * [-1, 0, 3]
22+ * ]
23+ *
24+ * B = [
25+ * [ 7, 0, 0 ],
26+ * [ 0, 0, 0 ],
27+ * [ 0, 0, 1 ]
28+ * ]
29+ *
30+ * Output:
31+ *
32+ * | 1 0 0 | | 7 0 0 | | 7 0 0 |
33+ * AB = | -1 0 3 | x | 0 0 0 | = | -7 0 3 |
34+ * | 0 0 1 |
35+ *
36+ * @author rampatra
37+ * @since 2019-08-09
38+ */
39+ public class SparseMatrixMultiplication {
40+
41+ /**
42+ * Time Complexity: O(Arow * Acol * Bcol)
43+ * Space Complexity: O(Arow * Bcol)
44+ *
45+ * @param A
46+ * @param B
47+ * @return
48+ */
49+ public static int [][] multiply (int [][] A , int [][] B ) {
50+ int [][] AB = new int [A .length ][B [0 ].length ];
51+
52+ for (int Bcol = 0 ; Bcol < B [0 ].length ; Bcol ++) {
53+ for (int Arow = 0 ; Arow < A .length ; Arow ++) {
54+ int sum = 0 ;
55+ for (int Acol = 0 ; Acol < A [0 ].length ; Acol ++) {
56+ sum += A [Arow ][Acol ] * B [Acol ][Bcol ];
57+ }
58+ AB [Arow ][Bcol ] = sum ;
59+ }
60+ }
61+
62+ return AB ;
63+ }
64+
65+ public static void main (String [] args ) {
66+ assertEquals (Arrays .deepToString (new int [][]{
67+ {7 , 0 , 0 },
68+ {-7 , 0 , 3 }
69+ }), Arrays .deepToString (multiply (new int [][]{
70+ {1 , 0 , 0 },
71+ {-1 , 0 , 3 }
72+ }, new int [][]{
73+ {7 , 0 , 0 },
74+ {0 , 0 , 0 },
75+ {0 , 0 , 1 }
76+ })));
77+
78+ assertEquals (Arrays .deepToString (new int [][]{
79+ {0 }
80+ }), Arrays .deepToString (multiply (new int [][]{
81+ {0 , 1 }
82+ }, new int [][]{
83+ {1 },
84+ {0 }
85+ })));
86+ }
87+ }
You can’t perform that action at this time.
0 commit comments