当前位置: 首页 > article >正文

【LeetCode:349. 两个数组的交集 + 哈希表】

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述

在这里插入图片描述

🍔 目录

    • 🚩 题目链接
    • ⛲ 题目描述
    • 🌟 求解思路&实现代码&运行结果
      • ⚡ 哈希表
        • 🥦 求解思路
        • 🥦 实现代码
        • 🥦 运行结果
    • 💬 共勉

🚩 题目链接

  • 349. 两个数组的交集

⛲ 题目描述

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

示例 1:

输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]
示例 2:

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
解释:[4,9] 也是可通过的

提示:

1 <= nums1.length, nums2.length <= 1000
0 <= nums1[i], nums2[i] <= 1000

🌟 求解思路&实现代码&运行结果


⚡ 哈希表

🥦 求解思路
  1. 计算两个数组的交集,直观的方法是遍历数组 nums1,对于其中的每个元素,遍历数组 nums2 判断该元素是否在数组 nums2 中,如果存在,则将该元素添加到返回值。
  2. 使用哈希集合存储元素,则可以在 O(1) 的时间内判断一个元素是否在集合中,从而降低时间复杂度。
  3. 有了基本的思路,接下来我们就来通过代码来实现一下。
🥦 实现代码
class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        Set<Integer> set1 = new HashSet<Integer>();
        Set<Integer> set2 = new HashSet<Integer>();
        for (int num : nums1) {
            set1.add(num);
        }
        for (int num : nums2) {
            set2.add(num);
        }
        return getIntersection(set1, set2);
    }

    public int[] getIntersection(Set<Integer> set1, Set<Integer> set2) {
        if (set1.size() > set2.size()) {
            return getIntersection(set2, set1);
        }
        Set<Integer> intersectionSet = new HashSet<Integer>();
        for (int num : set1) {
            if (set2.contains(num)) {
                intersectionSet.add(num);
            }
        }
        int[] intersection = new int[intersectionSet.size()];
        int index = 0;
        for (int num : intersectionSet) {
            intersection[index++] = num;
        }
        return intersection;
    }
}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述


http://www.kler.cn/a/355158.html

相关文章:

  • Android 代码模式的理解
  • 法学硕士,有哪些专业可以申请呢?
  • 【java基础系列】实现数字的首位交换算法
  • 使用qemu搭建armv7嵌入式开发环境
  • 【Spring事务】深入浅出Spring事务从原理到源码
  • linux 中文输入法设置的宏观思路 (****)
  • MySQL(B站CodeWithMosh)——2024.10.12(15)
  • OPC Router快速打通设备层与influxDB数据通讯
  • 矢量网络分析仪工作原理
  • Docker system
  • 数学学习——积化和差、和差化积
  • 2025 -中医儿科学 -考研-执业
  • vue 导出文件空白 导出EXCEL打不开
  • CTFHUB技能树之SQL——UA注入
  • 数字图像处理:图像分割应用
  • 什么!我上传的文件不见了?
  • Vue3状态管理
  • 4K分页机制相关介绍
  • 【C语言】循环结构-for循环
  • c++数据结构算法复习基础-- 5 -- 线性表-双向链表/双向循环链表-常用操作接口-复杂度分析
  • k3s安装指定版本以及离线安装(docker)
  • 多签机制简明理解及实例说明
  • GitHub每日最火火火项目(10.18)
  • 前端原型链:探索 JavaScript 中的继承奥秘
  • 宝塔下如何应对检测到存在待处理的恶意文件提醒
  • Android 通过计算器暗码启动应用