class Solution {
public:
vector<vector<int>> multiply(vector<vector<int>>& A, vector<vector<int>>& B) {
vector<vector<int>> res(A.size(),vector<int>(B[0].size()));
//统计数组A中的非零元素
vector<vector<int>> A_tmp(A.size());
for(int i=0;i<A.size();++i){
for(int j=0;j<A[0].size();++j){
if(A[i][j]){
A_tmp[i].push_back(j);
}
}
}
//统计数组B中的非零元素
vector<vector<int>> B_tmp(B[0].size());
for(int i=0;i<B[0].size();++i){
for(int j=0;j<B.size();++j){
if(B[j][i]){
B_tmp[i].push_back(j);
}
}
}
//处理矩阵的乘法
for(int i=0;i<A.size();++i){
for(int j=0;j<B[0].size();++j){
//使用非零元素较少的数组来实现乘法
for(int&k:A_tmp[i]){
res[i][j]+=A[i][k]*B[k][j];
}
}
}
//返回结果
return res;
}
};
稀疏矩阵乘法
最新推荐文章于 2024-06-17 21:21:54 发布