数组-两个数组的交集(两个集合)
题意:
给定两个数组,编写一个函数来计算它们的交集。
示例 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;}
}
数组-两个数组的交集(两个集合)相关推荐
- LeetCode简单题之两个数组的交集 II
题目 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集.返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值).可以不考 ...
- 两个数组的交集 II
两个数组的交集 II 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2] 示例 2: 输入:nums1 ...
- 9.LeetCode第350题---两个数组的交集2
一.目的 记录本题的主要目的是想让自己以及大家记住一个Java中的一个函数,可以去除数组中的后面无用的零 方法是Arrays.copyOfRange(res,0,index); 另外需要注意的是本题与 ...
- php 两个数组求交集_如何求两个数组的交集
题目描述 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2] 示例 2: 输入:nums1 = [4,9,5] ...
- 算法------------数组----------------两个数组的交集 II
给定两个数组,编写一个函数来计算它们的交集.示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2] 示例 2:输入: nums1 = [4,9,5], ...
- leetCode 两个数组的交集 II 问题记录
问题如下: 给定两个数组,写一个方法来计算它们的交集.例如: 给定 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].注意:输出结果中每个元素出现的次数, ...
- Leetcode 350. 两个数组的交集 II 解题思路及C++实现
解题思路: 和349. 两个数组的交集 这道题目很相似,这道题只是在返回的数组中,多了重复的数字,其实相较于349题,350题更简单. 先对两个数组进行排序,然后遍历这两个数组,找到相同的数字之后,就 ...
- leetcode 349. 两个数组的交集 两种方案,c语言实现
如题: 给定两个数组,编写一个函数来计算它们的交集.示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2]示例 2: 输入: nums1 = [4,9,5 ...
- 13. Leetcode 349. 两个数组的交集 (数组-分离双指针)
给定两个数组,编写一个函数来计算它们的交集.示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 示例 2:输入:nums1 = [4,9,5], nums2 ...
最新文章
- 谨慎能捕千秋蝉(二)——CSRF
- 编写第一个Android程序
- php list 转tree,PHP 数组转树形结构
- Http协议--Get和Post区别
- Linux进程管理:进程和线程基础知识
- https传输基于多ip实现的网站数据传输
- 2019斯坦福CS224n深度学习自然语言处理笔记(3)反向传播与计算图
- 操作xml文档的常用方式
- 软件测试的测试代码,软件测试(示例代码)
- 天空的颜色 363
- H3C的认证有用吗?对我来说有什么帮助?
- 【GLPNet2021】GLOBAL-LOCAL PROPAGATION NETWORK FOR RGB-D SEMANTIC SEGMENTATION
- java收octet-stream后转multipart方案
- excel2007 COUNTIFS
- iMindMap12免费下载安装激活教程及如何免费用思维导图学习
- 华硕天选2和华硕天选3哪个好 华硕天选2和华硕天选3区别
- 开发岗校招求职攻略——面试准备(7.2胸有成竹-技术面技巧)
- 新华三:助力IPv6部署,我们责无旁贷
- UUID和GUID的区别
- 别把大数据夸上天,请留意《头号玩家》剧情里给你留下的忠告