Taking advantage of 'sparse'
class Solution { public: vector<vector<int>> multiply(vector<vector<int>>& A, vector<vector<int>>& B) { vector<vector<int>> ret; int ha = A.size(); if(!ha) return ret; int wa = A[0].size(); if(!wa) return ret; int hb = wa; int wb = B[0].size(); if(!wb) return ret; // Preprocessing unordered_map<int, bool> ArowZero, BcolZero; for(int i = 0; i < ha; i ++) { bool bAllZero = true; for(int j = 0; j < wa; j ++) { if(A[i][j]) { bAllZero = false; break; } } ArowZero[i] = bAllZero; } for(int i = 0; i < wb; i ++) { bool bAllZero = true; for(int j = 0; j < hb; j ++) { if(B[j][i]) { bAllZero = false; break; } } BcolZero[i] = bAllZero; } ret.assign(ha, vector<int>(wb, 0)); for(int i = 0; i < ha; i ++) for(int j = 0; j < wb; j ++) { if(!ArowZero[i] && !BcolZero[j]) { int sum = 0; for(int k = 0; k < wa; k ++) { sum += A[i][k] * B[k][j]; } ret[i][j] = sum; } } return ret; } };
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步