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

示例1:

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

示例2:

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

  • 说明:

输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。

我们可以不考虑输出结果的顺序。

  • 进阶:

如果给定的数组已经排好序呢?你将如何优化你的算法?

如果 nums1 的大小比 nums2 小很多,哪种方法更优?

如果 nums2 的元素存储在磁盘上,内存是有限的,并且你不能一次加载所有的元素到内存中,你该怎么办?

题解分析:

首先,我们可以确定,要是数组本身是有序的,很快就可以得出数组的交集是什么

那么我们就先对数组进行排序。然后通过双指针遍历两个数组

在开始遍历的时候,两个指针都位于初始位置,然后往右移动指针

1、当两个指针的数据不相等时,则较小数据的指针向右移动

2、当两个数据相等时,则添加数据到结果集中,并且将两个指针都向右移动

3、当其中一个指针超出界限时,则遍历结束

class Solution {public int[] intersect(int[] nums1, int[] nums2) {Arrays.sort(nums1);Arrays.sort(nums2);int length1 = nums1.length, length2 = nums2.length;int[] intersection = new int[Math.min(length1, length2)];int index1 = 0, index2 = 0, index = 0;while (index1 < length1 && index2 < length2) {if (nums1[index1] < nums2[index2]) {index1++;} else if (nums1[index1] > nums2[index2]) {index2++;} else {intersection[index] = nums1[index1];index1++;index2++;index++;}}return Arrays.copyOfRange(intersection, 0, index);}
}

执行结果:

php 两个数组 交集_两个数组的交集相关推荐

  1. c语言讲两个数组合并_两列数据相互去掉重复值后合并

    大家好,今日继续讲VBA数组与字典解决方案的第27讲,内容是两列数据中相互去掉重复值之后将数据合并.这讲的内容利用到动态数组,固定数组,数组的合并,数组的转置等等. 还是先看实例,下面的工作表中A列和 ...

  2. php多维数组合并_两种PHP二维数组合并的方式

    本文主要和大家分享第一种合并方式:通过PHP的数组API给出的array_merge方法来合并一个数组 ,希望能帮助到大家. 代码:$a = array(array("1",&qu ...

  3. java 数组 内存_图解Java数组的内存分配

    1. Java数组是静态的 Java是静态语言,所以Java的数组也是静态的,即:数组被初始化后,长度不可变 静态初始化:显式指定每个数组元素的初始值,系统决定数组长度 String[] books ...

  4. access vba 常量数组赋值_聊聊 VBA 数组的那些坑

    为什么使用数组? 1. 缩减工作薄文件大小,提高运行效率 一般而言只是使用 Excel 的内置工作表函数,在运算方面还是很高效的,但有时因为一个单元格牵扯的计算太多,比如调用多单元格数据,对结果文本进 ...

  5. 数组超过预设的最大数组大小_工作表数组大小的扩展及意义

    朋友们好,今日给大家继续讲解VBA数组与字典解决方案的第17讲,数组大小的扩充问题.这一讲的内容相对比较简单,在之前的章节中讲了数组与数组的计算规律,也是利用了数组的扩展原理. 其实,两个数组计算时, ...

  6. Matlab数组操作_实现三维数组的写入与读取

    Matlab数组操作 三维数组的写入 将多个二维数组写入三维数组中 %原始二维数组 a1=[0.25 0.25 0.25 0.25 0.23;0.25 0.25 0.11 0.27 0.27;0.25 ...

  7. php 输出数组内容_关于打印数组的10种方法详解

    假设有一个数组:<?php $arr=["PHP","中文","网"]; echo $arr; ?>请问上面的代码会输出什么?上 ...

  8. 将两个数组河滨_两名3岁男孩在河滨公园玩耍迷了路 幸亏被好心人“捡”到

    民警安抚孩子 多彩贵州网讯(本网记者 徐昆)"你好,民警同志,我在河滨公园见到两个小孩."10月27日下午,南明区网格民警田雨风接到报警称,在贵阳市河滨公园,一名热心市民" ...

  9. html两个框架同时_两个框架的故事

    html两个框架同时 If you're like me you have a favourite framework you gravitate towards in every project. ...

最新文章

  1. Realm数据库拾遗
  2. 大尺寸3D打印机:不再是“围城”!工业级3D打印的瞬发时代已来!
  3. com口驱动_Ubuntu 安装Nvidia显卡驱动指南
  4. 计算机服务哪些不能关闭,Win7系统下哪些系统服务不能关闭
  5. JAVA中对象的序列化的作用?
  6. mysql查询默认排序规则_深究 mysql 默认排序, order by 的顺序【收藏】
  7. SpringBoot中拦截器
  8. php 基础入门篇之前言
  9. 树——二叉树的深层特性
  10. 动态得到查询结果后绑定
  11. ubuntu开机自启动python程序
  12. 有关E45: ‘readonly‘ option is set (add!to override)错误的解决方法
  13. 途胜怎样与android手机互联,现代途胜车载蓝牙怎么连接,途胜手机互联映射教程...
  14. sfgghshs测试测试
  15. 四川麻将胡牌判定(Python、C#、C++)
  16. NowCoder--Protoss and Zerg
  17. [presto(trino)]多种日期写法
  18. http基本请求头详解
  19. 石墨烯/SiO2复合气凝胶微球/包覆二氧化硅纳米颗粒/载Pt石墨烯中空二氧化硅微球
  20. find the longest of the shortest

热门文章

  1. Pivotal冯雷:以数字化为核心竞争力的时代 自主可控是企业的“必然选择”
  2. Elastic Jeff Yoshimura:开源正在开启新一轮的创新 | 人物志
  3. 架构日趋复杂的今天,如何重构数据库和应用边界?
  4. 账户配置阻止使用计算机.怎样开机,开机自启动设置怎么操作 开机自启动设置如何禁止【图文介绍】...
  5. class传参 python_Python 初学者必备的常用内置函数
  6. mysql 与 redis 如何保证数据一致性问题 ?
  7. 企业微信H5_消息推送接收消息回调配置、内网穿透到本地
  8. 解决idea修改html、js、css后,浏览器不能同步加载
  9. CentOS7 最小化安装后的必备操作
  10. 前后端分离,如何解决跨域(代理模式)、路由拦截(进入页面需要登录)以及请求拦截(登录TOKEN失效)等问题(初学者)