两个数组的交集II
两个数组的交集II
给定两个数组,编写一个函数来计算它们的交集。
示例#
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2,2]
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[4,9]
说明#
- 输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。
- 我们可以不考虑输出结果的顺序。
题解#
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var intersect = function(nums1, nums2) {
var hashTable = {};
var target = [];
nums1.forEach(v => {
if(hashTable[v]) hashTable[v]++;
else hashTable[v] = 1;
})
nums2.forEach(v => {
if(hashTable[v] && hashTable[v] > 0) {
hashTable[v]--;
target.push(v);
}
})
return target;
};
思路#
本题使用哈希表的方式来解答,而Js
中对象也是以HashTable
进行存储的,便可以直接利用Js
对象来实现哈希表,请注意题目要求结果中每个元素出现的次数应与元素在两个数组中出现次数的最小值一致,根据这个要求那么需要在哈希表中记录值出现的次数,首先定义一个HashTable
用以记录值出现次数,然后定义目标数组,接着将第一个数组nums1
进行遍历,在哈希表中如果没有定义这个key
,那么就将这个key
的值设置为1
,如果已经定义了,那么就将其值自增,然后遍历第二个数组nums2
,直接判断在哈希表中是否定义该key
,如果定义且其计数值大于0
,那么就将哈希表中该key
的计数值自减,然后将该key
推入数组,循环结束后返回目标数组即可。
每日一题#
https://github.com/WindrunnerMax/EveryDay
题源#
https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理