LintCode 两个数组的交集
547.两数组的交集
描述
给出两个数组,写出一个方法求出它们的交集
样例
例1:
输入: nums1 = [1, 2, 2, 1], nums2 = [2, 2],
输出: [2].
例2:
输入: nums1 = [1, 2], nums2 = [2],
输出: [2].
挑战
可以用三种不同的方法实现吗?
注意事项
- 结果中的每个元素必须是唯一的。
- 结果需要为升序。
代码部分
public class Solution {/*** @param nums1: an integer array* @param nums2: an integer array* @return: an integer array*/public int[] intersection(int[] nums1, int[] nums2) {// write your code hereHashSet<Integer> set1=new HashSet<Integer>();for(int i:nums1){set1.add(i);}HashSet<Integer> set2=new HashSet<Integer>();for(int i:nums2){if(set1.contains(i)){set2.add(i);}}int[] result=new int[set2.size()];int i=0;for(int n:set2){result[i++]=n;}return result;}
}
548.两数组的交集
给定两个数组,计算两个数组的交集
样例
Example1
Input:
nums1 = [1, 2, 2, 1], nums2 = [2, 2]
Output:
[2, 2]
Example2
Input:
nums1 = [1, 1, 2], nums2 = [1]
Output:
[1]
挑战
-如果给定的数组已经排序了怎么办?如何优化算法?
-如果nums1的大小比num2的小怎么办?哪种算法更好?
-如果nums2的元素存储在磁盘上,并且内存受到限制,以至于不能一次将所有元素加载到内存中,该怎么办?
注意事项
每个元素出现次数得和在数组里一样
答案可以以任意顺序给出
public class Solution {/*** @param nums1: an integer array* @param nums2: an integer array* @return: an integer array*/public int[] intersection(int[] nums1, int[] nums2) {// write your code hereList<Integer> tmp = new ArrayList<>();Map<Integer, Integer> map = new HashMap<Integer, Integer>();for (int i = 0; i < nums1.length; i++) {Integer value = map.get(nums1[i]);map.put(nums1[i], (value == null ? 0 : value) + 1);}for (int i = 0; i < nums2.length; i++) {if (map.containsKey(nums2[i]) && map.get(nums2[i]) != 0) {tmp.add(nums2[i]);map.put(nums2[i], map.get(nums2[i]) - 1);}}int[] result = new int[tmp.size()];int k = 0;for (Integer e : tmp)result[k++] = e;return result;}
}
补充说明
集合框架的使用
LintCode 两个数组的交集相关推荐
- 两个数组的交集 II
两个数组的交集 II 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2] 示例 2: 输入:nums1 ...
- 数组-两个数组的交集(两个集合)
题意: 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 示例 2: 输入:nums1 = [4,9,5] ...
- 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] ...
- Leetcode 350. 两个数组的交集 II 解题思路及C++实现
解题思路: 和349. 两个数组的交集 这道题目很相似,这道题只是在返回的数组中,多了重复的数字,其实相较于349题,350题更简单. 先对两个数组进行排序,然后遍历这两个数组,找到相同的数字之后,就 ...
- 350. Intersection of Two Arrays II 两个数组的交集 II
Title 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2] 示例 2: 输入: nums1 = ...
- php两个数组找公共部分,PHP开发中如何查找两个数组的交集
在PHP中,可以使用内置函数array_intersect()来查找两个数组的交集,它可以返回两个数组的公共元素(相交部分).下面我们就来具体介绍一下. array_intersect()函数 基本语 ...
- leetcode初级算法4.两个数组的交集 II
leetcode初级算法4.两个数组的交集 II 仅为个人刷题记录,不提供解题思路 题解与收获 我的解法:(总结在代码中) public int[] intersect(int[] nums1, in ...
- 349. 两个数组的交集 golang
349. 两个数组的交集 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2] 示例 2: 输入: num ...
最新文章
- 分享Java面试中的几个重要基础问题
- 桔子浏览器电脑版不显示图片怎么办 看不到图片怎么解决
- rect函数_Python基础入门(9):从函数到高级魔法方法--阿里云天池
- idea编译器没有tomcat的选项解决方案
- win10系统自带图标/壁纸位置
- 移动机顶盒migu-jt-u1 unt400c刷机 hi3798 root
- html水晶按钮图片,PS按钮制作高级教程之网页常用水晶按钮
- EIDROS3.9学习(一)
- Python实例:七段数码管
- 如何写出简洁明了的开发功能说明书
- epub android 乱码,ibooks打开含iframe的epub乱码
- 总结定时器设计方法_超实用!网站导航栏设计方法总结
- 这老铁教你如何制作亮眼简厉!!
- 数据分析统计基础(三):差异性/相关性分析
- ElasticSearch学习2_Java version:1.7.0_51 suffers from critical bug及ES对JDK版本要求
- “不为圣贤,便为禽兽。莫问收获,但问耕耘”
- 网络ID、主机ID和子网掩码有何区别?
- win7修复ubuntu的引导
- Python3 02 数字(Number)、字符串、列表、元组、字典
- 数据结构(十一) -- C语言版 -- 树 - 二叉树基本概念