1st round, 311 Sparse Matrix Multiplication

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;*/
   
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值