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

示例 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 的元素存储在磁盘上,磁盘内存是有限的,并且你不能一次加载所有的元素到内存中,你该怎么办?

思路:先进行排序,然后遍历获取交集即可
代码如下:

public int[] intersect(int[] nums1, int[] nums2) {Arrays.sort(nums1);Arrays.sort(nums2);return intersect1(nums1.length>=nums2.length?nums1:nums2, nums1.length>=nums2.length?nums2:nums1);}private int[] intersect1(int[] longArr, int[] shortArr) {int[] res = new int[shortArr.length];int count=0, j=0;for(int i=0;i<shortArr.length;i++) {for(;j<longArr.length;j++) {if(shortArr[i] == longArr[j]) {res[count++]=longArr[j++];break;}else if (shortArr[i] < longArr[j]) {break;}}}return Arrays.copyOf(res, count);}

改进一下,使用单层循环

public int[] intersect(int[] nums1, int[] nums2) {Arrays.sort(nums1);Arrays.sort(nums2);return intersect1(nums1.length>=nums2.length?nums1:nums2, nums1.length>=nums2.length?nums2:nums1);}private int[] intersect1(int[] longArr, int[] shortArr) {int[] res = new int[shortArr.length];int count=0;for(int i=0, j=0;i<shortArr.length && j<longArr.length;i++) {if (shortArr[i] > longArr[j]) {while (shortArr[i] > longArr[j] && j<longArr.length-1) {j++;}}if(shortArr[i] == longArr[j]) {res[count++]=longArr[j++];}}return Arrays.copyOf(res, count);}

2019-03-14-算法-进化(两个数组的交集 II)相关推荐

  1. leetcode初级算法4.两个数组的交集 II

    leetcode初级算法4.两个数组的交集 II 仅为个人刷题记录,不提供解题思路 题解与收获 我的解法:(总结在代码中) public int[] intersect(int[] nums1, in ...

  2. LeetCode算法题350:两个数组的交集II(Intersection of Two Arrays II)

    技术交流可以加: 本人微信:xcg852390212 本人qq:852390212 学习交流qq群1(已满): 962535112 学习交流qq群2: 780902027 两个数组的交集II Leet ...

  3. LeetCode 350. 两个数组的交集 II

    350. 两个数组的交集 II 难度简单640收藏分享切换为英文接收动态反馈 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集.返回结果中每个元素出现的次数,应与元素在两 ...

  4. 两个数组的交集 II

    两个数组的交集 II 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2] 示例 2: 输入:nums1 ...

  5. 两个对象数组交集_yiduobo的每日leetcode 349.两个数组的交集 amp;amp; 350.两个数组的交集II...

    祖传的手艺不想丢了,所以按顺序写一个leetcode的题解.计划每日两题,争取不卡题吧 349.两个数组的交集https://leetcode-cn.com/problems/intersection ...

  6. leetcode系列-350.两个数组的交集II

    leetcode系列–第350题.两个数组的交集II 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集. 返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一 ...

  7. leetcode350. 两个数组的交集 II

    给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2] 示例 2: 输入: nums1 = [4,9,5 ...

  8. LeetCode 350. 两个数组的交集 II ntersection of Two Arrays II

    Table of Contents 一.中文版 二.英文版 三.My answer 四.解题报告 一.中文版 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2 ...

  9. Leetcode 350. 两个数组的交集 II 解题思路及C++实现

    解题思路: 和349. 两个数组的交集 这道题目很相似,这道题只是在返回的数组中,多了重复的数字,其实相较于349题,350题更简单. 先对两个数组进行排序,然后遍历这两个数组,找到相同的数字之后,就 ...

  10. 350. Intersection of Two Arrays II 两个数组的交集 II

    Title 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2] 示例 2: 输入: nums1 = ...

最新文章

  1. 十年后,这是25个你会习以为常的AI应用场景
  2. Qt Designer提升控件
  3. luogu_3966【题解】单词 AC自动机
  4. jdk8和hotspot_HotSpot的-XshowSettings标志的简单性和价值
  5. python列表各元素修改为int类型
  6. 递增的整数序列链表的插入_程序员:数据结构——链表List、ArrayList、LinkedList...
  7. 美国重金投资3D芯片项目!MIT+美独资公司攻关,旨在继续领先中国
  8. Java 的自动装箱拆箱
  9. mydbtest文档
  10. 信号与系统19(拉普拉斯逆变换)
  11. 实战一:输出“王者荣耀”的游戏角色
  12. mysql中文版 win7_MySQL数据库下载64位下载-MySQL数据库64位【支持win7/win10】8.0.18 官方中文最新版-东坡下载...
  13. 网络收藏夹--用来收藏我经常访问的网站
  14. 华硕Y450拆机清灰、拆下光驱助散热、卸载无用软件
  15. UC桌面 测试版本发布
  16. Java简答题整理(一)
  17. JMeter 性能测试实例
  18. jQuery的排他思想
  19. 《JS实现复制内容到剪贴板功能,可兼容所有PC浏览器,不兼容手机端》
  20. xpanx原理解析 | 只要 3 秒!抖音视频无水印下载

热门文章

  1. python画气泡图_​用Python把图做的好看点:用Matplotlib画个好看的气泡图
  2. 为什么饮料瓶大都是圆的,牛奶盒却是方的?原因你想不到
  3. 每日一笑 | 大学教室的真实写照...
  4. 中国式创新技术“步态识别”终于来临,你大胆地走两步,我就知道你是谁
  5. cass字体_不动产 准备工作 第一步: 管理CASS码
  6. 通达学院计算机组成原理试卷及答案,2021全国网络工程专业大学排名(5篇)
  7. python3多线程queue_Python多线程(3)——Queue模块
  8. 摇滚java游戏_java 集合类
  9. excel 如何替换带上标的文字_如何在Excel中批量提取中文汉字和英文字母
  10. matlab生成有向网络,matlab ode45和矩阵生成有向网络图