两个数组的交集

2023-11-14

摘自:https://leetcode-cn.com/problems/intersection-of-two-arrays/solution/duo-chong-jie-fa-jie-jue-349-liang-ge-shu-zu-de-ji/

一.两个数组的交集

给定两个数组,编写一个函数来计算它们的交集。

示例 1:

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

示例 2:

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]

说明:

输出结果中的每个元素一定是唯一的。
我们可以不考虑输出结果的顺序。

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

题解

方法1:Set(题解中出现最多的)

即将两个数组转换成Set,因为Set具有无序性所以不用担心重复问题
集合Set:

  • 确定性:对任意对象都能判定其是否属于某一个集合。
  • 互异性:集合内每个元素都是无差异的,注意是内容差异。
  • 无序性:集合内的顺序无关

Java中的集合接口Set

  • HashSet(基于散列函数的集合,无序,不支持同步)
  • TreeSet(基于树结构的集合,可排序的,不支持同步)
  • LinkedHashSet(基于散列函数和双向链表的集合,可排序,不支持同步)
import java.util.*;


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){
   

            if(set1.contains(num)){
   

                set2.add(num);

            }

        }

        int g = 0;
        int[] a = new int[set2.size()];

        for(int num:set2){
   

            a[g] = num;
            g++;

        }

        return a;

    }
}

方法2:双指针

先对两个数组进行排序,然后用双指针进行遍历
时间复杂度:O(nlogn)

import java.util.*;


class Solution {
   
    public int[] intersection(int[] nums1, int[] nums2) {
   

        Arrays.sort(nums1);
        Arrays.sort(nums2);

        int i 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

两个数组的交集 的相关文章

  • Cocos2d-android游戏引擎

    什么是游戏引擎 游戏引擎是指一些已编写好的可编辑游戏系统或者一些交互式实时图像应用程序的核心组件 这些系统为游戏设计者提供各种编写游戏所需的各种工具 其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始 Cocos2d家族 coc
  • 数据结构小知识------时间与空间复杂度

    本章思维导图 一 时间复杂度 1 1时间复杂度的概念 什么是时间复杂度呢 时间复杂度其实就是一个程序运行时它的指令运行的次数 在这里 程序默认每条指令的运行时间是一样的 所以时间复杂度就可以理解为是程序内指令的运行次数 说一千道一万 不如来
  • Java 使用EasyExcel解析导入的Excel文件

    最近在做项目时 有遇到需要使用excel导入的场景 以前也有写过使用 Apache poi 来解析导入数据 但整体解析逻辑比较繁琐 封装成工具类后也不是很好用 这个可能是我个人技术原因 和poi无关 这次开发时 在网上找了个更加简洁的方式

随机推荐

  • Python循环控制语句

    Python循环控制语句 生活中循环的例子也很多 例如 听歌的时候进行循环等等 程序中循环的效果和生活中的循环效果相同 Python中的循环是往复的执行某一段代码 结构while循环 初始条件设置 通常是一个计数器 来控制条件表达式是否成立
  • OpenStack nova-compute 报TooOldComputeService版本过低问题

    项目场景 安装openstack的nova compute部分 问题描述 启动nova conductor时报错 查看nova conductor log 发现如下错误 Current Nova version does not suppo
  • android aosp,安卓源码AOSP下载使用的正确姿势

    安卓源码AOSP下载使用的正确姿势 从同步源码到编译完成 整个过程应至少准备200G空间 编译时需要的内存数与编译线程数相关 博主实测比较极限的配置是4核8G 超过这个范围将触发swap交换导致编译速度急剧下降 开始搞 注 以下 号所有内容
  • mac运行ps特别慢_PS CC 2019 太卡,运行特别慢?这几个优化提速技巧我再说一遍...

    只要设置好这几个选项 让你的 PS CC 2019 运行如飞 曾经写过关于PS优化提速的教程 但总有粉丝问我PS很卡很慢 怎么办 所以 这几个核心的 PS 优化提速技巧我再说一遍 先声明一下 我这里讲的优化提速是指你电脑配置足够的情况下PS
  • ​LeetCode刷题实战33:搜索旋转排序数组

    来源 https www cnblogs com techflow p 12441002 html 算法的重要性 我就不多说了吧 想去大厂 就必须要经过基础知识和业务逻辑面试 算法面试 所以 为了提高大家的算法能力 这个公众号后续每天带大家
  • 【Monkey】Android压力测试

    一 简单介绍一下Monkey Monkey工具直接运行在设备或模拟器的adb shell中 生成用户或系统的伪随机事件流 二 Monkey命令 1 adb shell monkey p package 事件数 50 随机完成50个事件 ad
  • Unity架构之域重新加载

    域重新加载 域重新加载将重置脚本状态 默认情况下会启用域重新加载 此功能为您提供了全新的脚本状态 并会在您每次进入运行模式时重置所有静态字段和已注册的处理程序 这意味着每次在 Unity Editor 中进入运行模式时 您的项目就会采用与在
  • pkpm字体库下载_pkpm字体库转到cad

    等级 文件 5MB 格式 rar 五层框架结构PKPM模型 CAD配筋图纸 建筑说明 本工程为唐山市市医院办公大楼 建筑面积约为 4000平方米 本建筑共五层 为框架结构 抗震烈度按8度设防 图纸包括 唐山医院建筑图 CAD配筋图纸以及pk
  • matlab实现以不同信噪比在干净语音信号中叠加噪声

    原理公式 信噪比计算公式 信号功率和噪声功率之比 也是信号幅度和噪声幅度的平方之比 一般情况下我们使用分贝的形式 即单位是dB 其值为对数信号与噪声功率比的十倍 matlab实现代码 function y noise add noise m
  • shopify 前端开发遇到的问题及解决(部分)

    问题 gallery不同部分的小li互相干扰 解决 修复了小li互相干扰的bug 原因 其实不单单需要修改小li的class 并且需要修改小li的控件 也就是是loopli 不然会互相干扰 shopify的section中jQuery能够拿
  • MongoDB 内置角色

    1 数据库用户角色 针对每一个数据库进行控制 read 提供了读取所有非系统集合 以及系统集合中的system indexes system js system namespacesreadWrite 包含了所有read权限 以及修改所有非
  • 面试官问:你熟悉哪些HashMap的封装扩展类?

    我习惯了无所谓 却不是真的什么都不在乎 请关注 源码猎人 目录 简介 LinkedHashMap 源码解读 LinkedHashMap属性 LinkedHashMap构造函数 LinkedHashMap 方法 LinkedHashMap 内
  • (二)动态白盒测试(含逻辑覆盖例子)

    一 动态白盒测试 重点 1 概念 动态 测试运行中的程序 白盒 洞察盒子里面 检查代码并观察运行状况 生成测试数据 分析测试结果的工作量大 使开展测试工作费时 费力 费人 二 动态白盒测试常用的测试用例方法 a 逻辑覆盖 语句覆盖 分支 判
  • [Python人工智能] 七.什么是过拟合及dropout解决神经网络中的过拟合问题

    从本专栏开始 作者正式开始研究Python深度学习 神经网络及人工智能相关知识 前一篇文章通过TensorFlow实现分类学习 以MNIST数字图片为例进行讲解 本文将介绍什么是过拟合 并采用droput解决神经网络中过拟合的问题 以Ten
  • SCL+顺控GRAPH西门子PLC1500 SCL程序 包括PLC程序,触摸屏程序 灌装线程序有配方

    SCL 顺控GRAPH西门子PLC1500 SCL程序 包括PLC程序 触摸屏程序 中文注释详细 灌装线程序有配方 报警记录 液位读取 重量读取 除个别调用外 程序全采用SCL 顺控程序编写 YID 277626722251284好3730
  • 20200808网抑云笔试(动态规划 补全回文串)刷题(粉刷房子,会议室(最多一心几用))

    1 网抑云题 一个是进行字符串补全使之成为回文串 AC70 另一个是一堆物品平均分给两个人 允许丢弃 求最少丢弃 字符串补全为回文串的 我的做法是 动态规划 判断if s i s j 是的话就 dp i j dp i 1 j 1 否则 的话
  • php CURL模拟登陆+获取cookie

    模拟post请求 function post curl url params headers httpInfo array ch curl init curl setopt ch CURLOPT HEADER 1 curl setopt c
  • HTML+CSS实现旋转立方体

    1 六个面叠在一起 2 六个面整体水平垂直居中 3 旋转且位移到对应的六个面上
  • Using DirectSound to Play Audio Stream Data

    Download demo project 30 5 Kb Download source 3 27 Kb Introduction This article with its code shows how to play audio st
  • 两个数组的交集

    摘自 https leetcode cn com problems intersection of two arrays solution duo chong jie fa jie jue 349 liang ge shu zu de ji