题目:

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相关推荐

  1. 论文阅读笔记系列(一)SMAT: An Input Adaptive Auto-Tuner for Sparse Matrix-Vector Multiplication—————————————

    前言 最近一直觉得自己只是在看书,看文献,但是没有尝试动手写一些总结,写一些笔记,导致看书的效率实在太低.因此想做一个论文笔记系列,把自己读的论文简单地总结一下.同时也借此将看过的文献分享给大家,如果 ...

  2. 论文阅读笔记系列(一)SMAT: An Input Adaptive Auto-Tuner for Sparse Matrix-Vector Multiplication

    前言 最近一直觉得自己只是在看书,看文献,但是没有尝试动手写一些总结,写一些笔记,导致看书的效率实在太低.因此想做一个论文笔记系列,把自己读的论文简单地总结一下.同时也借此将看过的文献分享给大家,如果 ...

  3. CUDA Samples: matrix multiplication(C = A * B)

    以下CUDA sample是分别用C++和CUDA实现的两矩阵相乘运算code即C= A*B,CUDA中包含了两种核函数的实现方法,第一种方法来自于CUDA Samples\v8.0\0_Simple ...

  4. R语言构建xgboost模型:基于稀疏数据(dgCMatrix which is a sparse matrix)、稠密数据(dense matrix)、xgb.DMatrix数据聚合

    R语言构建xgboost模型:基于稀疏数据(dgCMatrix which is a sparse matrix).稠密数据(dense matrix) 目录

  5. C++sparse matrix 稀疏矩阵的实现算法(附完整源码)

    C++sparse matrix 稀疏矩阵的实现算法 C++sparse matrix 稀疏矩阵的实现算法完整源码(定义,实现,main函数测试) C++sparse matrix 稀疏矩阵的实现算法 ...

  6. 2020牛客国庆集训派对day2 MATRIX MULTIPLICATION CALCULATOR

    MATRIX MULTIPLICATION CALCULATOR 题意: 求两矩阵相乘 题解: 应该都学过把...矩阵相乘 矩阵相乘的前提是两个矩阵的列等于另一个矩阵的行 也就是cij=∑aik*bk ...

  7. HDU 4920 Matrix multiplication(矩阵相乘)

    各种TEL,233啊.没想到是处理掉0的情况就能够过啊.一直以为会有极端数据.没想到居然是这种啊..在网上看到了一个AC的奇妙的代码,经典的矩阵乘法,仅仅只是把最内层的枚举,移到外面就过了啊...有点 ...

  8. 编码分布式矩阵乘法(Coded Distributed Matrix Multiplication, CDMM)问题简单介绍

    许多现代分布式计算框架都会遇到大规模分布式矩阵乘法问题,即计算两个大规模矩阵和的乘积,如MapReduce.Spark.由于分布式计算系统会出现的无法预测的时延,主节点(master node)必须等 ...

  9. Sparse Matrix, MUMPS

    Intersystems Cache' = multidimensional Sparse Matrix, MUMPS http://intersystems.cn/cache/analysts/re ...

最新文章

  1. C++中extern的使用
  2. 命令行启动ssh_如何在虚拟机中正确的第一次启动Linux系统
  3. 位置式PID与增量式PID的介绍和代码实现
  4. 搜索推荐炼丹笔记:酒店搜索位置偏差的边际重要性
  5. 进口配额管理和出口配额管理_SAP采购管理模块中的quot;配额协议quot;应用详解...
  6. 线程、进程、程序区别
  7. 无法删除所有指定的值_AutoCAD所有系统变量大全
  8. python全局名称空间_python名称空间,命名空间
  9. 长春大学计算机学院招生简章,长春大学招生简章
  10. 苹果公布AirPods Pro维修费用:705元买一只,789买充电盒
  11. 微信开发者工具不显示二维码问题
  12. 推荐系统在滴滴司机调度系统中的应用实践
  13. rds本地库到rds恢复_阿里云rds 备份和还原
  14. 重磅!容器存储解决方案蓝皮书发布
  15. 有线异步通信原理_【对讲机的那点事】揭秘对讲机系统集群网关的应用原理
  16. php 过滤微信符号昵称,PHP处理微信昵称特殊符号过滤的方法
  17. c语言输出菱形for循环_c语言输出菱形(c语言for循环打印菱形)
  18. 群晖NAS的公网、NAT、DDNS、证书等配置二
  19. Bear and Big Brother
  20. mysql locate用法,LOCATE()函数如何与MySQL WHERE子句一起使用?

热门文章

  1. 第四范式完成超10亿元C轮融资,估值12亿美元
  2. 这个Python资源在GitHub上标星超8000,现在被翻译成了中文 | 资源
  3. Ignite与Spark内存计算平台对比分析
  4. 较为周全的Asp.net提交验证方案(Session版)
  5. Linux系统管理和维护常用命令
  6. jQuery DataTables 插件使用笔记
  7. Linux 配置LNMP服务器 并配置虚拟主机
  8. Android NDK 【错误】The method loadLibrary(String) is undefined for the type Settings.Syste
  9. 职责链模式 Chain of Responsibility
  10. Puppet的安装部署