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阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471922.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab 中序列求极值的方法,Matlab中求序列的极值

我们知道&#xff0c;在Matlab中有专门求序列最大值和最小值的函数&#xff0c;分别是Max 和 Min&#xff0c;但是有时候我们不满足于求整个序列的最值&#xff0c;而是对序列的极值&#xff0c;也就是局部的最值感兴趣。对于解析函 数&#xff0c;这个比较简单&#xff0c;只要…

oracle rank 语法_oracle rank函数怎么用

首先创建示例表&#xff0c;再初始化几条测试数据create table t_score(id number primary key,student_id number(3),student_name char(8) not null,sub_name varchar2(20),score number(10,2));insert into t_score (id, student_id, student_name, sub_name, score)values…

@synchronized (object)使用详解

synchronized关键字代表这个方法加锁,相当于不管哪一个线 程A每次运行到这个法时,都要检查有没有其它正在用这个方法的线程B&#xff08;或者C D等&#xff09;,有的话要等正在使用这个方法的线程B&#xff08;或者C D&#xff09;运行完这个方法后再运行此线程A,没有的话,直接…

LeetCode 1644. 二叉树的最近公共祖先 II

文章目录1. 题目2. 解题1. 题目 给定一棵二叉树的根节点 root&#xff0c;返回给定节点 p 和 q 的最近公共祖先&#xff08;LCA&#xff09;节点。 如果 p 或 q 之一不存在于该二叉树中&#xff0c;返回 null。 树中的每个节点值都是互不相同的。 根据维基百科中对最近公共祖…

c2010页面闪现_vue使用v-if v-show页面闪烁,div闪现的解决方法

在页面层次结构&#xff0c;数据较多的时候&#xff0c;用v-if或者v-show就会出现div闪现&#xff0c;或者部分闪烁的结果。可以在根元素添加v-cloak来解决&#xff0c;并且设置它的样式即可。代码只是示例&#xff0c;还需要自己修改测试。Document[v-cloak]{display: none;}c…

这就是搜索引擎--读书笔记五--索引的建立与更新

索引的建立和更新 索引的建立 前一总结里说到&#xff0c;如果索引结构建立好了&#xff0c;可以提高搜索的速度&#xff0c;那么给定一个文档集合&#xff0c;索引是如何建立起来的呢&#xff1f;建立索引的方式有很多种&#xff0c;在这里我就书中提到的三种方法简单总结一下…

LeetCode 1650. 二叉树的最近公共祖先 III(哈希)

文章目录1. 题目2. 解题1. 题目 给定一棵二叉树中的两个节点 p 和 q&#xff0c;返回它们的最近公共祖先节点&#xff08;LCA&#xff09;。 每个节点都包含其父节点的引用&#xff08;指针&#xff09;。Node 的定义如下&#xff1a; class Node {public int val;public No…

PHP方向+go+rpc+swoole,瞅瞅 PHP+Swoole 作为网络通信框架

这里瞅瞅Swoole框架&#xff0c;因为说的比较屌&#xff0c;官网里面文档比较多https://www.swoole.com/代码地址(https://gitee.com/swoole/swoole)这里先复制他的说明(https://wiki.swoole.com/)Swoole底层内置了异步非阻塞、多线程的网络IO服务器。PHP程序员仅需处理事件回调…

三角形外接球万能公式_外接球半径常见的求法

2&#xff1a;若一个多面体的各面都与一个球的球面相切&#xff0c;则称这个多面体是这个球的外切多面体&#xff0c;这个球是这个多面体的内切球。球心到截面的距离d与球半径R及截面的半径r有以下关系&#xff1a;&#xff0e;球面被经过球心的平面截得的圆叫&#xff0e;被不…

如何准备考试

最近准备International Requirement Engeering Board 考试&#xff0c;但凡上点年纪对记忆就不行了&#xff0c;时间也不够&#xff0c;就想着怎么偷懒。 因此&#xff0c;就把测试题做了一遍&#xff0c;然后分析各个章节的分值比重及自己容易错的地方的比重。然后有的放矢再去…

LeetCode 1676. 二叉树的最近公共祖先 IV

文章目录1. 题目2. 解题1. 题目 给定一棵二叉树的根节点 root 和 TreeNode 类对象的数组&#xff08;列表&#xff09; nodes&#xff0c;返回 nodes 中所有节点的最近公共祖先&#xff08;LCA&#xff09;。 数组&#xff08;列表&#xff09;中所有节点都存在于该二叉树中&a…

matlab行人检测非极大值抑制,多目标检测中的非极大值抑制(NMS)的算法改进_jza...

非极大值抑制(Non-Maximum Suppression&#xff0c;NMS)&#xff0c;顾名思义就是抑制不是极大值的元素&#xff0c;可以理解为局部最大搜索。这个局部代表的是一个邻域&#xff0c;邻域有两个参数可变&#xff0c;一是邻域的维数&#xff0c;二是邻域的大小。而是用于目标检测…

android 粘性view_Android自定义StickinessView粘性滑动效果

design包的出现&#xff0c;Android界面发生了巨大变化&#xff0c;各种滑动配合的效果&#xff0c;下面我就粘性滑动中的一种进行自定义&#xff0c;效果图如下&#xff1a;大家看到效果了&#xff0c;这里我是继承了LinerLayout&#xff0c;方便一点&#xff0c;若果是ViewGr…

Azure SQL 数据库:服务级别与性能问答

ShawnBice 2014 年 5 月 5 日上午 10:00 几天前&#xff0c;我发表了一篇文章&#xff0c;并就 4 月 24 日发布的适用于Windows Azure SQL 数据库的新服务级别提供了一些预料中的问题和解答&#xff0c;在其中为读者介绍了一些详细信息。在这篇跟进文章中&#xff0c;我想提…

matlab粒子图像测速工具,程序 PIVlab - 时间分辨粒子图像测速(PIV)工具: 一 联合开发网 - pudn.com...

程序所属分类&#xff1a;图形图像处理开发工具&#xff1a;matlab文件大小&#xff1a;7964KB下载次数&#xff1a;29上传日期&#xff1a;2017-07-21 11:48:16上 传 者&#xff1a;long1219说明&#xff1a; PIVlab - 时间分辨粒子图像测速(PIV)工具&#xff1a;一种基于GUI…

LeetCode 1852. 每个子数组的数字种类数(滑窗)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums与一个整数 k&#xff0c;请你构造一个长度 n-k1 的数组 ans&#xff0c;这个数组第i个元素 ans[i] 是每个长度为k的子数组 nums[i:ik-1] [nums[i], nums[i1], ..., nums[ik-1]]中数字的种类数。 返回这个数组 ans。 示…

python读文件出现特殊字符_python- pandas :读取列中带有特殊字符的文件

添加参数na_values ’&#xff1f;’到read_csv.样品&#xff1a;import pandas as pdimport iotempu"""Date Time,a2010-01-27 16:00:00,?2010-01-27 16:10:00,2.22010-01-27 16:30:00,1.7"""df pd.read_csv(io.StringIO(temp),na_values?)p…

娜塔莉波特曼2015哈佛毕业演讲

Hello, class of 2015.I am so honest to be here today.Dean Khurana,faculty,parents,and most especially graduating students. Thank you so much for inviting me. The Senior Class Committee. it’s genuinely one of the most exciting things I’ve ever been asked …

PHP ajax 传递中文乱码,ajax+php传递中文乱码解决办法

AJAX的乱码的出现在的原因由于XMLHTTP采用的是Unicode编码上传数据&#xff0c;而一般页面采用的是gb2312,这就造成显示页面时产生乱码。而当在获取页面时的XMLHttp返回的是utf-8编码&#xff0c;这就造成了显示产生乱码。解决方法之一就是在PHP文件中显示声明为GB2312header(&…

用chrome模拟微信浏览器访问需要OAuth2.0网页授权的页面

现在很流行微信网页小游戏&#xff0c;用html5制作的小游戏移过来&#xff0c;可以放到微信浏览器中打开&#xff0c;关键是可以做成微信分享朋友圈的形式&#xff0c;大大提高游戏的传播&#xff0c;增强好友的游戏互动。 微信浏览器中打开网页游戏效果还不错&#xff0c;对手…