文章目录

  • 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. 两个稀疏向量的点积(哈希)相关推荐

  1. LeetCode 170. 两数之和 III - 数据结构设计(哈希map)

    文章目录 1. 题目 2. 解题 1. 题目 设计并实现一个 TwoSum 的类,使该类需要支持 add 和 find 的操作. add 操作 - 对内部数据结构增加一个数. find 操作 - 寻找 ...

  2. LeetCode 350. 两个数组的交集 II(哈希)

    文章目录 1. 题目 2. 解题 2.1 hash 2.2 数组已排序 1. 题目 给定两个数组,编写一个函数来计算它们的交集. 示例 1:输入: nums1 = [1,2,2,1], nums2 = ...

  3. UA MATH567 高维统计 专题0 为什么需要高维统计理论?——理解稀疏向量与hard-threshold

    UA MATH567 高维统计 专题0 为什么需要高维统计理论?--理解稀疏向量与hard-threshold 稀疏向量的soft-threshold与hard-threshold近似 引入hard- ...

  4. 第19次csp认证 202006-2 稀疏向量(C++)

    题目 分析 本题需要计算的是两个n维向量的内积,只需计算两者对应的稀疏向量index相同的分量乘积,然后累加就可以了. 向量的一个分量包含index和value,使用struct来存储比较方便. n& ...

  5. 【稀疏向量技术是什么?】差分隐私系统学习记录(六)

    The Algorithmic Foundations of Differential Privacy (六) 写在前面的话 Remarks on composition Weak Quantific ...

  6. [pyspark]itemcf协同过滤推荐算法------应用华为比赛数据实现(包含转化为稀疏向量,lsh模型,杰卡德距离)

    学完以后,第一感受,确实会比python代码来得简洁 先上代码 第一步,用pysql处理原始数据,包含计算冷却得分(不是今天的重点,暂不会在后面细说了) import findspark findsp ...

  7. 海量数据相似数据查找方法(ANN):【高维稀疏向量的相似查找——MinHash, LSH, SimHash】【稠密向量的相似查找——Faiss、Annoy、ScaNN、Hnswlib】

    主要分为高维稀疏向量和稠密向量两大方向. 高维稀疏向量的相似查找--minhash, lsh, simhash 针对高维稀疏数据情况,如何通过哈希技术进行快速进行相似查找. 例如,推荐系统中item- ...

  8. 稀疏向量计算技术杂谈

    稀疏向量计算技术杂谈 稀疏计算是数学规划求解器计算速度提高的最基本套路. 现实中的大规模数学规划问题绝大多数是稀疏的, 例如下面这个流程车间调度问题的数学规划模型, 假如当m=10, n=100时, ...

  9. R语言union函数计算数据对象(vector、list、dataframe)的并集:union函数计算两个vector向量、dataframe、列表list的并集

    R语言union函数计算数据对象(vector.list.dataframe)的并集:union函数计算两个vector向量.dataframe.列表list的并集 目录

最新文章

  1. 我是如何自学 Python 的
  2. 在JAVA中线程到底起到什么作用
  3. python代码大全和用法用量_Python numpy.stack()用法及代码示例
  4. 每日一皮:键盘未找到的窘境...
  5. 云服务器mysql备份与还原数据库命令详解
  6. 如何使用HTML,CSS和JavaScript构建技巧计算器
  7. IBM云计算带我们进入新服务经济时代
  8. 朋友圈消失的人,都在偷偷读哪些书?
  9. Js中RegExp对象
  10. springboot maven项目打jar包
  11. 剑指Offer之复杂链表的复制
  12. 蓝桥杯 BASIC-14 基础练习 时间转换
  13. 2021年全国水体分布(按省、市、县)矢量数据的制作与分享
  14. Java面对对象程序设计——面对对象
  15. 众人逃离北上广后又逃回:观念不合拍还要拼爹
  16. python教学计划_2017从零开始数据分析学习计划
  17. 综合评价方法(一)------基础知识
  18. Ubuntu16.04中文语言包下载失败原因解决问题
  19. java毕业设计社区疫情防控系统mybatis+源码+调试部署+系统+数据库+lw
  20. Dream to Control Learning Behaviors by Latent Imagination-笔记

热门文章

  1. Python html 代码转成 word(docx)
  2. 手写springboot_Spring Boot 入门教程 | 图文讲解
  3. python中的tkinter模块
  4. mysql 单标递归_MySql8 WITH RECURSIVE递归查询父子集的方法
  5. java 线程池 wait,Java 多线程 之 wait等待 线程实例
  6. gvim for php,转 : Gvim建立IDE编程环境 (Windows篇)
  7. 在python中模块可以封装_python 制作python包,封装成可用模块教程
  8. 莒南机器人_莒南42项重点建设项目公布!一定有你关注的
  9. c++远征之模板篇——标准模板库(STL)
  10. python内存管理机制错误_Python内存管理机制和垃圾回收机制的简单理解