LeetCode 1570. 两个稀疏向量的点积(哈希)
文章目录
- 1. 题目
- 2. 解题
1. 题目
给定两个稀疏向量,计算它们的点积(数量积)。
实现类 SparseVector
:
SparseVector(nums)
以向量 nums 初始化对象。dotProduct(vec)
计算此向量与 vec 的点积。
稀疏向量 是指绝大多数分量为 0 的向量。
你需要 高效 地存储这个向量,并计算两个稀疏向量的点积。
进阶:当其中只有一个向量是稀疏向量时,你该如何解决此问题?
示例 1:
输入:nums1 = [1,0,0,2,3], nums2 = [0,3,0,4,0]
输出:8
解释:v1 = SparseVector(nums1) , v2 = SparseVector(nums2)
v1.dotProduct(v2) = 1*0 + 0*3 + 0*0 + 2*4 + 3*0 = 8示例 2:
输入:nums1 = [0,1,0,0,0], nums2 = [0,0,0,0,2]
输出:0
解释:v1 = SparseVector(nums1) , v2 = SparseVector(nums2)
v1.dotProduct(v2) = 0*0 + 1*0 + 0*0 + 0*0 + 0*2 = 0示例 3:
输入:nums1 = [0,1,0,0,2,0,0], nums2 = [1,0,0,0,3,0,4]
输出:6提示:
n == nums1.length == nums2.length
1 <= n <= 10^5
0 <= nums1[i], nums2[i] <= 100
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/dot-product-of-two-sparse-vectors
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 使用 哈希 存储非0的元素,key 是下标,value 是值
class SparseVector {public:unordered_map<int,int> m;int size = 0;SparseVector(vector<int> &nums) {size = nums.size();for(int i = 0; i < nums.size(); ++i){if(nums[i])m[i] = nums[i];}}// Return the dotProduct of two sparse vectorsint dotProduct(SparseVector& vec) {int ans = 0;for(auto& kv : vec.m){if(m.find(kv.first) != m.end()){ans += m[kv.first]*kv.second;}}return ans;}
};// Your SparseVector object will be instantiated and called as such:
// SparseVector v1(nums1);
// SparseVector v2(nums2);
// int ans = v1.dotProduct(v2);
184 ms 164.6 MB C++
我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
LeetCode 1570. 两个稀疏向量的点积(哈希)相关推荐
- LeetCode 170. 两数之和 III - 数据结构设计(哈希map)
文章目录 1. 题目 2. 解题 1. 题目 设计并实现一个 TwoSum 的类,使该类需要支持 add 和 find 的操作. add 操作 - 对内部数据结构增加一个数. find 操作 - 寻找 ...
- LeetCode 350. 两个数组的交集 II(哈希)
文章目录 1. 题目 2. 解题 2.1 hash 2.2 数组已排序 1. 题目 给定两个数组,编写一个函数来计算它们的交集. 示例 1:输入: nums1 = [1,2,2,1], nums2 = ...
- UA MATH567 高维统计 专题0 为什么需要高维统计理论?——理解稀疏向量与hard-threshold
UA MATH567 高维统计 专题0 为什么需要高维统计理论?--理解稀疏向量与hard-threshold 稀疏向量的soft-threshold与hard-threshold近似 引入hard- ...
- 第19次csp认证 202006-2 稀疏向量(C++)
题目 分析 本题需要计算的是两个n维向量的内积,只需计算两者对应的稀疏向量index相同的分量乘积,然后累加就可以了. 向量的一个分量包含index和value,使用struct来存储比较方便. n& ...
- 【稀疏向量技术是什么?】差分隐私系统学习记录(六)
The Algorithmic Foundations of Differential Privacy (六) 写在前面的话 Remarks on composition Weak Quantific ...
- [pyspark]itemcf协同过滤推荐算法------应用华为比赛数据实现(包含转化为稀疏向量,lsh模型,杰卡德距离)
学完以后,第一感受,确实会比python代码来得简洁 先上代码 第一步,用pysql处理原始数据,包含计算冷却得分(不是今天的重点,暂不会在后面细说了) import findspark findsp ...
- 海量数据相似数据查找方法(ANN):【高维稀疏向量的相似查找——MinHash, LSH, SimHash】【稠密向量的相似查找——Faiss、Annoy、ScaNN、Hnswlib】
主要分为高维稀疏向量和稠密向量两大方向. 高维稀疏向量的相似查找--minhash, lsh, simhash 针对高维稀疏数据情况,如何通过哈希技术进行快速进行相似查找. 例如,推荐系统中item- ...
- 稀疏向量计算技术杂谈
稀疏向量计算技术杂谈 稀疏计算是数学规划求解器计算速度提高的最基本套路. 现实中的大规模数学规划问题绝大多数是稀疏的, 例如下面这个流程车间调度问题的数学规划模型, 假如当m=10, n=100时, ...
- R语言union函数计算数据对象(vector、list、dataframe)的并集:union函数计算两个vector向量、dataframe、列表list的并集
R语言union函数计算数据对象(vector.list.dataframe)的并集:union函数计算两个vector向量.dataframe.列表list的并集 目录
最新文章
- 我是如何自学 Python 的
- 在JAVA中线程到底起到什么作用
- python代码大全和用法用量_Python numpy.stack()用法及代码示例
- 每日一皮:键盘未找到的窘境...
- 云服务器mysql备份与还原数据库命令详解
- 如何使用HTML,CSS和JavaScript构建技巧计算器
- IBM云计算带我们进入新服务经济时代
- 朋友圈消失的人,都在偷偷读哪些书?
- Js中RegExp对象
- springboot maven项目打jar包
- 剑指Offer之复杂链表的复制
- 蓝桥杯 BASIC-14 基础练习 时间转换
- 2021年全国水体分布(按省、市、县)矢量数据的制作与分享
- Java面对对象程序设计——面对对象
- 众人逃离北上广后又逃回:观念不合拍还要拼爹
- python教学计划_2017从零开始数据分析学习计划
- 综合评价方法(一)------基础知识
- Ubuntu16.04中文语言包下载失败原因解决问题
- java毕业设计社区疫情防控系统mybatis+源码+调试部署+系统+数据库+lw
- Dream to Control Learning Behaviors by Latent Imagination-笔记
热门文章
- Python html 代码转成 word(docx)
- 手写springboot_Spring Boot 入门教程 | 图文讲解
- python中的tkinter模块
- mysql 单标递归_MySql8 WITH RECURSIVE递归查询父子集的方法
- java 线程池 wait,Java 多线程 之 wait等待 线程实例
- gvim for php,转 : Gvim建立IDE编程环境 (Windows篇)
- 在python中模块可以封装_python 制作python包,封装成可用模块教程
- 莒南机器人_莒南42项重点建设项目公布!一定有你关注的
- c++远征之模板篇——标准模板库(STL)
- python内存管理机制错误_Python内存管理机制和垃圾回收机制的简单理解