Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit a4817fe

Browse files
committed
Sparse matrix multiplication done
1 parent 613bc46 commit a4817fe

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
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+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /