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:
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 |
1 public class Solution { 2 public int[,] Multiply(int[,] A, int[,] B) { 3 int rowsA = A.GetLength(0), colsA = A.GetLength(1), colsB = B.GetLength(1); 4 5 var output = new int[rowsA, colsB]; 6 var nonZeroRows = new List<int>(); 7 8 for (int i = 0; i < rowsA; i++) 9 { 10 for (int j = 0; j < colsA; j++) 11 { 12 if (A[i, j] != 0) 13 { 14 nonZeroRows.Add(i); 15 break; 16 } 17 } 18 } 19 20 foreach (var i in nonZeroRows) 21 { 22 for (int j = 0; j < colsB; j++) 23 { 24 for (int k = 0; k < colsA; k++) 25 { 26 output[i, j] += A[i, k] * B[k, j]; 27 } 28 } 29 } 30 31 return output; 32 } 33 }