311. Sparse Matrix Multiplication
题目:
Given two sparse matrices A and B, return the result of AB.
You may assume that A's column number is equal to B's row number.
Example:
A = [[ 1, 0, 0],[-1, 0, 3] ]B = [[ 7, 0, 0 ],[ 0, 0, 0 ],[ 0, 0, 1 ] ]| 1 0 0 | | 7 0 0 | | 7 0 0 | AB = | -1 0 3 | x | 0 0 0 | = | -7 0 3 || 0 0 1 |
链接: http://leetcode.com/problems/sparse-matrix-multiplication/
题解:
Sparse Matrix相乘。题目提示要用HashMap,于是我们就用HashMap, 保存A中不为0行,以及B中不为0的列,然后遍历两个hashmap来更新结果数组。
Time Complexity - O(mnkl), Space Complexity - O(mn + kl)。
public class Solution {public int[][] multiply(int[][] A, int[][] B) {if(A == null || B == null || A.length == 0 || B.length == 0 || (A[0].length != B.length)) {return new int[][]{};}Map<Integer, int[]> rowInA = new HashMap<>(); // store non-zero rows in AMap<Integer, int[]> colInB = new HashMap<>(); // store non-zero cols in Bfor(int i = 0; i < A.length; i++) {for(int j = 0; j < A[0].length; j++) {if(A[i][j] != 0) {rowInA.put(i, A[i]);break;}}}for(int j = 0; j < B[0].length; j++) {for(int i = 0; i < B.length; i++) {if(B[i][j] != 0) {int[] tmp = new int[B.length];for(int k = 0; k < B.length; k++) {tmp[k] = B[k][j];}colInB.put(j, tmp);break;}}}int[][] res = new int[A.length][B[0].length];for(int i : rowInA.keySet()) {for(int j : colInB.keySet()) {for(int k = 0; k < A[0].length; k++) {res[i][j] += rowInA.get(i)[k] * colInB.get(j)[k];}}}return res;} }
Reference:
311. Sparse Matrix Multiplication相关推荐
- 论文阅读笔记系列(一)SMAT: An Input Adaptive Auto-Tuner for Sparse Matrix-Vector Multiplication—————————————
前言 最近一直觉得自己只是在看书,看文献,但是没有尝试动手写一些总结,写一些笔记,导致看书的效率实在太低.因此想做一个论文笔记系列,把自己读的论文简单地总结一下.同时也借此将看过的文献分享给大家,如果 ...
- 论文阅读笔记系列(一)SMAT: An Input Adaptive Auto-Tuner for Sparse Matrix-Vector Multiplication
前言 最近一直觉得自己只是在看书,看文献,但是没有尝试动手写一些总结,写一些笔记,导致看书的效率实在太低.因此想做一个论文笔记系列,把自己读的论文简单地总结一下.同时也借此将看过的文献分享给大家,如果 ...
- CUDA Samples: matrix multiplication(C = A * B)
以下CUDA sample是分别用C++和CUDA实现的两矩阵相乘运算code即C= A*B,CUDA中包含了两种核函数的实现方法,第一种方法来自于CUDA Samples\v8.0\0_Simple ...
- R语言构建xgboost模型:基于稀疏数据(dgCMatrix which is a sparse matrix)、稠密数据(dense matrix)、xgb.DMatrix数据聚合
R语言构建xgboost模型:基于稀疏数据(dgCMatrix which is a sparse matrix).稠密数据(dense matrix) 目录
- C++sparse matrix 稀疏矩阵的实现算法(附完整源码)
C++sparse matrix 稀疏矩阵的实现算法 C++sparse matrix 稀疏矩阵的实现算法完整源码(定义,实现,main函数测试) C++sparse matrix 稀疏矩阵的实现算法 ...
- 2020牛客国庆集训派对day2 MATRIX MULTIPLICATION CALCULATOR
MATRIX MULTIPLICATION CALCULATOR 题意: 求两矩阵相乘 题解: 应该都学过把...矩阵相乘 矩阵相乘的前提是两个矩阵的列等于另一个矩阵的行 也就是cij=∑aik*bk ...
- HDU 4920 Matrix multiplication(矩阵相乘)
各种TEL,233啊.没想到是处理掉0的情况就能够过啊.一直以为会有极端数据.没想到居然是这种啊..在网上看到了一个AC的奇妙的代码,经典的矩阵乘法,仅仅只是把最内层的枚举,移到外面就过了啊...有点 ...
- 编码分布式矩阵乘法(Coded Distributed Matrix Multiplication, CDMM)问题简单介绍
许多现代分布式计算框架都会遇到大规模分布式矩阵乘法问题,即计算两个大规模矩阵和的乘积,如MapReduce.Spark.由于分布式计算系统会出现的无法预测的时延,主节点(master node)必须等 ...
- Sparse Matrix, MUMPS
Intersystems Cache' = multidimensional Sparse Matrix, MUMPS http://intersystems.cn/cache/analysts/re ...
最新文章
- C++中extern的使用
- 命令行启动ssh_如何在虚拟机中正确的第一次启动Linux系统
- 位置式PID与增量式PID的介绍和代码实现
- 搜索推荐炼丹笔记:酒店搜索位置偏差的边际重要性
- 进口配额管理和出口配额管理_SAP采购管理模块中的quot;配额协议quot;应用详解...
- 线程、进程、程序区别
- 无法删除所有指定的值_AutoCAD所有系统变量大全
- python全局名称空间_python名称空间,命名空间
- 长春大学计算机学院招生简章,长春大学招生简章
- 苹果公布AirPods Pro维修费用:705元买一只,789买充电盒
- 微信开发者工具不显示二维码问题
- 推荐系统在滴滴司机调度系统中的应用实践
- rds本地库到rds恢复_阿里云rds 备份和还原
- 重磅!容器存储解决方案蓝皮书发布
- 有线异步通信原理_【对讲机的那点事】揭秘对讲机系统集群网关的应用原理
- php 过滤微信符号昵称,PHP处理微信昵称特殊符号过滤的方法
- c语言输出菱形for循环_c语言输出菱形(c语言for循环打印菱形)
- 群晖NAS的公网、NAT、DDNS、证书等配置二
- Bear and Big Brother
- mysql locate用法,LOCATE()函数如何与MySQL WHERE子句一起使用?
热门文章
- 第四范式完成超10亿元C轮融资,估值12亿美元
- 这个Python资源在GitHub上标星超8000,现在被翻译成了中文 | 资源
- Ignite与Spark内存计算平台对比分析
- 较为周全的Asp.net提交验证方案(Session版)
- Linux系统管理和维护常用命令
- jQuery DataTables 插件使用笔记
- Linux 配置LNMP服务器 并配置虚拟主机
- Android NDK 【错误】The method loadLibrary(String) is undefined for the type Settings.Syste
- 职责链模式 Chain of Responsibility
- Puppet的安装部署