LeetCode 1865. 找出和为指定值的下标对(哈希)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给你两个整数数组 nums1 和 nums2 ,请你实现一个支持下述两类查询的数据结构:

  • 累加 ,将一个正整数加到 nums2 中指定下标对应元素上。
  • 计数 ,统计满足 nums1[i] + nums2[j] 等于指定值的下标对 (i, j) 数目(0 <= i < nums1.length 且 0 <= j < nums2.length)

实现 FindSumPairs 类:

  • FindSumPairs(int[] nums1, int[] nums2) 使用整数数组 nums1 和 nums2 初始化 FindSumPairs 对象。
  • void add(int index, int val) 将 val 加到 nums2[index] 上,即,执行 nums2[index] += val
  • int count(int tot) 返回满足 nums1[i] + nums2[j] == tot 的下标对 (i, j) 数目。
示例:
输入:
["FindSumPairs", "count", "add", "count", "count", "add", "add", "count"]
[[[1, 1, 2, 2, 2, 3], [1, 4, 5, 2, 5, 4]], [7], [3, 2], [8], [4], [0, 1], [1, 1], [7]]
输出:
[null, 8, null, 2, 1, null, null, 11]解释:
FindSumPairs findSumPairs = new FindSumPairs([1, 1, 2, 2, 2, 3], [1, 4, 5, 2, 5, 4]);
findSumPairs.count(7);  // 返回 8 ; 下标对 (2,2), (3,2), (4,2), (2,4), (3,4), (4,4) 满足 2 + 5 = 7 ,下标对 (5,1), (5,5) 满足 3 + 4 = 7
findSumPairs.add(3, 2); // 此时 nums2 = [1,4,5,4,5,4]
findSumPairs.count(8);  // 返回 2 ;下标对 (5,2), (5,4) 满足 3 + 5 = 8
findSumPairs.count(4);  // 返回 1 ;下标对 (5,0) 满足 3 + 1 = 4
findSumPairs.add(0, 1); // 此时 nums2 = [2,4,5,4,5,4]
findSumPairs.add(1, 1); // 此时 nums2 = [2,5,5,4,5,4]
findSumPairs.count(7);  // 返回 11 ;下标对 (2,1), (2,2), (2,4), (3,1), (3,2), (3,4), (4,1), (4,2), (4,4) 满足 2 + 5 = 7 ,下标对 (5,3), (5,5) 满足 3 + 4 = 7提示:
1 <= nums1.length <= 1000
1 <= nums2.length <= 10^5
1 <= nums1[i] <= 10^9
1 <= nums2[i] <= 10^5
0 <= index < nums2.length
1 <= val <= 10^5
1 <= tot <= 10^9
最多调用 add 和 count 函数各 1000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/finding-pairs-with-a-certain-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • nums2 的长度比较长,对其数字进行哈希计数
  • add 的时候,更新哈希计数
  • count 的时候,遍历 nums1 ,在 哈希map 中查找 tot - nums1_i
class FindSumPairs {unordered_map<int,int> m;vector<int> v1, v2;
public:FindSumPairs(vector<int>& nums1, vector<int>& nums2) {v1 = nums1;v2 = nums2;for(auto n : nums2)m[n]++;//哈希计数}void add(int index, int val) {m[v2[index]]--;//原来的数字少一个v2[index] += val;//更新值m[v2[index]]++;//新的数字多一个}int count(int tot) {int ans = 0;for(auto n : v1){if(m.find(tot-n) != m.end())//哈希查找ans += m[tot-n];}return ans;}
};

360 ms 72 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

聚类算法 距离矩阵_快速且不需要超参的无监督聚类方法

论文&#xff1a; Efficient Parameter-free Clustering Using First Neighbor RelationsEfficient Parameter-free Clustering Using First Neighbor Relations​arxiv.org代码&#xff1a;https://github.com/ssarfraz/FINCH-Clustering​github.com此文是CVPR2019的oral文章…

服务器不知别内存_图文版 许迎果第63期 选购和使用内存需要注意的点

其实要说清楚内存的方方面面还是要颇费一番功夫的.内存的起源和发展历程估计要讲一期,内存厂商,颗粒,品牌也需要单独讲一期,内存超频也要单独讲一期.内存看似简单,但要说的内容却是很多的.所以为了节省各位小伙伴的时间,我会尽量精简,只讲对大多数人都比较实用的部分.本期大体上…

LeetCode 1877. 数组中最大数对和的最小值(贪心)

文章目录1. 题目2. 解题1. 题目 一个数对 (a,b) 的 数对和 等于 a b 。最大数对和 是一个数对数组中最大的 数对和 。 比方说&#xff0c;如果我们有数对 (1,5) &#xff0c;(2,3) 和 (4,4)&#xff0c;最大数对和 为 max(15, 23, 44) max(6, 5, 8) 8 。 给你一个长度为 偶…

5个经典的javascript面试问题

问题1&#xff1a;Scope作用范围 考虑下面的代码&#xff1a; (function() { var a b 5;})();console.log(b); 什么会被打印在控制台上&#xff1f; 回答 上面的代码会打印 5。这个问题的诀窍是&#xff0c;这里有两个变量声明&#xff0c;但 a 使用关键字var声明的。代表它…

python查看字符编码_python如何查看字符集

python查看字符集的方法&#xff1a;可以利用第三方库chardet来进行判断。通过在命令行下执行【pip install chatdet】命令来安装chardet。使用方法如&#xff1a;【chardet.detect(bHello, world!)】。Python利用第三方库chardet判断字符集。如果安装了Anaconda&#xff0c;ch…

小程序多个echars_小程序界面与逻辑

主要内容数据绑定、渲染、界面层数据渲染和事件处理。一、数据绑定1.1 渲染层和逻辑层小程序宿主环境我们称微信客户端给小程序所提供的环境为宿主环境。小程序借助宿主环境提供的能力&#xff0c;可以完成许多普通网页无法完成的功能。小程序开发框架的目标是通过尽可能简单、…

Bootloader启动过程

1、作用 嵌入式系统的引导加载程序&#xff0c;系统上电后运行的第一段程序。在完成对系统的初始化任务后&#xff0c;它会将非易失性存储器&#xff08;通常是FLASH&#xff09;中的Linux内核拷贝到RAM中&#xff0c;然后跳转到内核的第一条指令处继续执行&#xff0c;从而启动…

LeetCode 1876. 长度为三且各字符不同的子字符串

文章目录1. 题目2. 解题1. 题目 如果一个字符串不含有任何重复字符&#xff0c;我们称这个字符串为 好 字符串。 给你一个字符串 s &#xff0c;请你返回 s 中长度为 3 的 好子字符串 的数量。 注意&#xff0c;如果相同的好子字符串出现多次&#xff0c;每一次都应该被记入…

python官方的扩展索引_Python列表操作与深浅拷贝(6)——列表索引、查询、修改、扩展...

列表list定义L1 []L2 [1,2,‘abc‘]L3list()L4 list(range(5))L5 [1,‘abc‘,True,None,[4,5,‘abc‘],str]isinstance(L5,list)True列表索引访问L6 list(range(5,10))L6[5, 6, 7, 8, 9]正索引&#xff1a;从下边界至上边界&#xff0c;从0开始&#xff0c;为列表中每一个元素…

numpy维度交换_数据分析-gt;基本操作numpy(1)

1.Numpy介绍与安装Numpy是什么&#xff1f;Numpy(Numerical Python)是目前Python数值计算中最为重要的基础包。大多数计算包都提供了基于Numpy的科学函数功能&#xff0c;将Numpy的数组对象作为数据交换的通用语。Numpy特点提供高效多维数组提供了基于数组的便捷算术操作以及广…

C#学习记录3上——类的封装,继承,多态

OOP面向对象的三大特点&#xff1a;封装&#xff08;encapsulation&#xff09;&#xff0c;继承&#xff08;inheritance&#xff09;&#xff0c;多态&#xff08;encapsulation&#xff09; 和JAVA与C一样&#xff0c;C#也是OOP语言。并且&#xff0c;C#对数据的封装要比C更…

LeetCode 1878. 矩阵中最大的三个菱形和(模拟)

文章目录1. 题目2. 解题1. 题目 给你一个 m x n 的整数矩阵 grid 。 菱形和 指的是 grid 中一个正菱形 边界 上的元素之和。 本题中的菱形必须为正方形旋转45度&#xff0c;且四个角都在一个格子当中。 下图是四个可行的菱形&#xff0c;每个菱形和应该包含的格子都用了相应颜…

计算尖峰电流的目的_入门必看!负荷计算的目的、方法以及原则详解

感谢关注【易筑电气】&#xff0c;我们会定期为您推送最新的电气资讯和各类实用干货&#xff0c;欢迎有料的电气设计师加入我们的QQ交流群&#xff1a;571819142。想了解我们的线上讲师招募计划&#xff1f;添加QQ&#xff1a;3335847624 开启新世界~负荷计算目的和意义低压供配…

python多线程实现方式_python中实现多线程有几种方式?

我们都知道&#xff0c;代码编程不是固定的东西&#xff0c;而是非常灵活的内容&#xff0c;根据不同的内容&#xff0c;我们可以拓展出很多条内容&#xff0c;最终目的还是为了可以实现结果&#xff0c;给大家举例说明其中一个最常用的多线程吧~以及实现的几种方式。1. 用函数…

linux查看磁盘占用

df -h比如是/data很满cd /datadu -sh *就可以看出哪个文件夹大&#xff0c;重复上面一步即可转载于:https://www.cnblogs.com/fenle/p/4381236.html

上下伸缩代码_CQRS之旅——旅程4(扩展和增强订单和注册限界上下文)

旅程4&#xff1a;扩展和增强订单和注册限界上下文进一步探索订单和注册的有界上下文。“我明白&#xff0c;如果一个人想看些新鲜的东西&#xff0c;旅行并不是没有意义的。”儒勒凡尔纳&#xff0c;环游世界80天对限界上下文的更改&#xff1a;前一章详细描述了订单和注册限界…

LeetCode 1879. 两个数组最小的异或值之和(状态压缩DP)

文章目录1. 题目2. 解题2.1 回溯2.2 状态压缩DP1. 题目 给你两个整数数组 nums1 和 nums2 &#xff0c;它们长度都为 n 。 两个数组的 异或值之和 为 (nums1[0] XOR nums2[0]) (nums1[1] XOR nums2[1]) ... (nums1[n - 1] XOR nums2[n - 1]) &#xff08;下标从 0 开始&am…

二叉排序树的后序遍历序列必然是递增的_剑指offer 33——二叉搜索树的后序遍历序列...

本题主要在于考察对二叉搜索树和后序遍历的理解。原题输入一个整数数组&#xff0c;判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true&#xff0c;否则返回 false。假设输入的数组的任意两个数字都互不相同。参考以下这颗二叉搜索树&#xff1a;5 / 2 6…

LeetCode 1880. 检查某单词是否等于两单词之和

文章目录1. 题目2. 解题1. 题目 字母的 字母值 取决于字母在字母表中的位置&#xff0c;从 0 开始 计数。即&#xff0c;a -> 0、b -> 1、c -> 2&#xff0c;以此类推。 对某个由小写字母组成的字符串 s 而言&#xff0c;其 数值 就等于将 s 中每个字母的 字母值 按…

python求矩阵的秩_Python 实现线性代数计算器

计算逆序数&#xff0c;运用O(N^2)的算法计算# 逆序数计算def reversePairs(nums):"""计算数组的逆序数&#xff0c;输入数组&#xff0c;返回逆序数"""res, n 0, len(nums)for i in range(1,n):for j in range(0,i):if nums[j]>nums[i]:res …