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

示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]
示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]

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

思路:
计算两个数组的交集,直观的方法是遍历数组 nums1,对于其中的每个元素,遍历数组 nums2 判断该元素是否在数组 nums2 中,如果存在,则将该元素添加到返回值。
假设数组 nums1 和 nums2 的长度分别是 mm 和 nn,则遍历数组 nums1 需要 O(m) 的时间,判断 nums1 中的每个元素是否在数组 nums2 中需要 O(n)的时间,因此总时间复杂度O(mn)

如果使用哈希集合存储元素,则可以在 O(1)的时间内判断一个元素是否在集合中,从而降低时间复杂度

首先使用两个集合分别存储两个数组中的元素,然后遍历较小的集合,判断其中的每个元素是否在另一个集合中,如果元素也在另一个集合中,则将该元素添加到返回值。该方法的时间复杂度可以降低到 O(m+n)

Java代码实现:

class Solution {public int[] intersection(int[] nums1, int[] nums2) {//建立两个集合Set<Integer> set1 = new HashSet<>();Set<Integer> set2 = new HashSet<>();//将数组元素放入两个集合中for(int i:nums1){set1.add(i);}for(int i:nums2){if(set1.contains(i)){set2.add(i);}}//建立一个数组用来存放元素并返回int [] arr = new int[set2.size()];int j = 0;for(int i:set2){arr[j++] = i;}return arr;}
}

数组-两个数组的交集(两个集合)相关推荐

  1. LeetCode简单题之两个数组的交集 II

    题目 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集.返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值).可以不考 ...

  2. 两个数组的交集 II

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

  3. 9.LeetCode第350题---两个数组的交集2

    一.目的 记录本题的主要目的是想让自己以及大家记住一个Java中的一个函数,可以去除数组中的后面无用的零 方法是Arrays.copyOfRange(res,0,index); 另外需要注意的是本题与 ...

  4. php 两个数组求交集_如何求两个数组的交集

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

  5. 算法------------数组----------------两个数组的交集 II

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

  6. leetCode 两个数组的交集 II 问题记录

    问题如下: 给定两个数组,写一个方法来计算它们的交集.例如: 给定 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].注意:输出结果中每个元素出现的次数, ...

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

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

  8. leetcode 349. 两个数组的交集 两种方案,c语言实现

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

  9. 13. Leetcode 349. 两个数组的交集 (数组-分离双指针)

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

最新文章

  1. 谨慎能捕千秋蝉(二)——CSRF
  2. 编写第一个Android程序
  3. php list 转tree,PHP 数组转树形结构
  4. Http协议--Get和Post区别
  5. Linux进程管理:进程和线程基础知识
  6. https传输基于多ip实现的网站数据传输
  7. 2019斯坦福CS224n深度学习自然语言处理笔记(3)反向传播与计算图
  8. 操作xml文档的常用方式
  9. 软件测试的测试代码,软件测试(示例代码)
  10. 天空的颜色 363
  11. H3C的认证有用吗?对我来说有什么帮助?
  12. 【GLPNet2021】GLOBAL-LOCAL PROPAGATION NETWORK FOR RGB-D SEMANTIC SEGMENTATION
  13. java收octet-stream后转multipart方案
  14. excel2007 COUNTIFS
  15. iMindMap12免费下载安装激活教程及如何免费用思维导图学习
  16. 华硕天选2和华硕天选3哪个好 华硕天选2和华硕天选3区别
  17. 开发岗校招求职攻略——面试准备(7.2胸有成竹-技术面技巧)
  18. 新华三:助力IPv6部署,我们责无旁贷
  19. UUID和GUID的区别
  20. 别把大数据夸上天,请留意《头号玩家》剧情里给你留下的忠告

热门文章

  1. 关于window.localtion的用法几点总结
  2. Python爬虫常见面试题(二)
  3. Fedora 23 将默认使用 Wayland – 多监视器支持
  4. [转]iOS 远程推送(APNs)
  5. xhprof 使用笔记
  6. 一个交换程序的通用版本
  7. 美团真的让人无语!背调了一个多星期,跟我说背调不通过!问原因,HR说没办法透露,但可以看其它美团机会...
  8. Nginx从安装到高可用,一篇搞定!
  9. 雷军做程序员时写的博客,太牛了!
  10. 基于 Spring Cloud 的微服务架构分析