欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Sparse Matrix Multiplication

程序员文章站 2022-05-22 19:57:22
...

FB高频题
sparse matrix指的是很多value都是0,
1,save the non zero index in pair
2,计算只对非0 index算
新的datastructure-pair<int,int>

class Solution {

public:
    /**
     * @param A: a sparse matrix
     * @param B: a sparse matrix
     * @return: the result of A * B
     */
    vector<vector<int>> multiply(vector<vector<int>> &A, vector<vector<int>> &B) {
        vector<vector<int>>res(A.size(), vector<int>(B[0].size(), 0));

        vector<pair<int,int>>AN, BN;
        for(int i = 0; i < A.size(); i++)
        {
            for(int j = 0; j < A[0].size(); j++)
            {
                if(A[i][j])
                {
                    AN.push_back({i,j});
                }
            }
        }
        
        for(int i = 0; i < B.size(); i++)
        {
            for(int j = 0; j < B[0].size(); j++)
            {
                if(B[i][j])
                {
                    BN.push_back({i,j});
                }
            }
        }
        
        for(auto a : AN)
        {
            for(auto b : BN)
            {
                if(a.second == b.first)
                {
                    res[a.first][b.second] += (A[a.first][a.second] * B[b.first][b.second]);
                }
            }
        }
        
        return res;
    }
};
相关标签: data structure