public class Solution {
public int[][] multiply(int[][] A, int[][] B) {
int m = A.length;
int n = A[0].length;
int p = B[0].length;
int[][] result = new int[m][p];
for(int i=0; i<m; i++){
for(int j=0; j<n; j++){
if(A[i][j]!=0){
for(int k=0; k<p; k++){
if(B[j][k]!=0) result[i][k]+=A[i][j]*B[j][k];
}
}
}
}
return result;
}
// 最直接的方法,就是按照矩阵的原始算法来求解。。。还是3层循环,先定了i,j层,也就是result[i][j]的位置,然后把k从0到A[0].length遍历一遍,相乘各项,在相加。。。这里我只是check了一下两项是否为0,只有都不为0,才相乘再相加。。。但对于时间复杂度的影响不大。还是N的三次方。。。
// 方法也可以通过,但是非常慢,5%,然后看到一个大大的波峰在前面。。。
//int[] default= new int[0]; !!! 不能把initiate一个 0大小的数组!!!特别是在要return int[][]的时候要注意。。
//if(A==null || B==null || A.length==0 || A[0].length==0 || B.length==0 || B[0].length==0 ) return default;
/* int m=A.length;
int n=A[0].length;
int p=B[0].length;
int[][] result= new int[m][p];
for(int i=0; i<m; i++){
for(int j=0; j<p; j++){
int tmp=0;
for(int k=0; k<n; k++){
if(A[i][k]!=0 && B[k][j]!=0) tmp+= A[i][k]*B[k][j];
}
result[i][j]=tmp;
}
}
return result;*/
}