【leetcode】349. 两个数组的交集(easy)

给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。

思路

  • 先遍历nums1将其元素不重复地添加到哈希表a中;
  • 建立哈希表dup用于存储b和a重复的元素;
  • 遍历nums2,若元素存在于nums1中并且还未被记录到dup,那么添加到dup中;
  • 建立与dup等长的数组,遍历dup,将其元素依次添加到数组中并返回。

解答

java 复制代码
class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        HashSet<Integer> a = new HashSet<>();
        HashSet<Integer> dup = new HashSet<>();
        for(int i = 0; i<nums1.length; i++)
            if(!a.contains(nums1[i]))
                a.add(nums1[i]);
        for(int i = 0; i<nums2.length; i++)
            if(a.contains(nums2[i]) && !dup.contains(nums2[i])) //如果元素在nums1中,且没被加入dup中
                dup.add(nums2[i]);
        int[] res = new int[dup.size()];
        int i = 0;
        for(int item: dup){
            res[i] = item;
            i++;
        }
        return res;
    }
}
相关推荐
2501_9411497914 分钟前
面向微服务异步消息队列与可靠投递的互联网系统高可用设计与多语言工程实践分享
leetcode·决策树
天赐学c语言17 分钟前
1.5 - 二叉树中的最大路径 && C++的类型转换
c++·算法·leecode
--JR24 分钟前
015——图(1.图的相关概念与存储)
数据结构·c++·算法·链表·图论
星空露珠31 分钟前
时间罗盘小界面模组
开发语言·数据结构·算法·游戏·lua
小宇的天下1 小时前
Calibre nmDRC Dimensional Check Operations(ENClosure/EXTernal/INTernal)(16-1)
算法
hz_zhangrl1 小时前
CCF-GESP 等级考试 2025年12月认证C++五级真题解析
c++·算法·青少年编程·gesp·gesp2025年12月·c++五级
JoannaJuanCV1 小时前
二维码解码算法:opencv 和 zxing-cpp
人工智能·opencv·算法
Tisfy1 小时前
LeetCode 1975.最大方阵和:脑筋急转弯
算法·leetcode·矩阵·题解·脑筋急转弯
GeminiJM1 小时前
算法学习常用函数详解
学习·算法
2501_941146321 小时前
多语言分布式任务调度与性能优化实践:Python、Java、Go、C++高效实战方案
leetcode·rabbitmq