【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;
    }
}
相关推荐
过期的秋刀鱼!4 分钟前
学习曲线-过拟合和欠拟合要做什么以及原因
人工智能·python·深度学习·算法·机器学习·模型评估
m沐沐23 分钟前
【自然语言处理】词向量转换与中文文本情感分类——从CountVectorizer到朴素贝叶斯
人工智能·算法·机器学习·自然语言处理·分类·中文分词·词向量转换
科学实验家41 分钟前
01背包问题
算法
普通攻击往后拉43 分钟前
Leetcode 448. 找到所有数组中消失的数字
算法·leetcode·职场和发展
mifengxing1 小时前
LeetCode 189 轮转数组|3种解法拆解,从暴力到O(1)原地最优解
数据结构·算法·leetcode
MIngYaaa5201 小时前
2026暑期牛客多校3 2026-7-24
数据结构·算法·000
2501_937860941 小时前
Java 集合底层深度剖析:Map 与 Set、二叉搜索树、哈希表全解
java·数据结构·散列表
geats人山人海2 小时前
算法基础第二讲 基础算法下
算法
Hommy882 小时前
【剪映小助手】字符串列表转对象接口(Str List To Obds)
数据结构·list·剪映小助手·视频剪辑自动化·剪映api·开源剪映小助手
阳明山水2 小时前
销量预测2026下半年:新架构、新基准与新共识
人工智能·深度学习·算法·机器学习·架构