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 两个数组的交集相关推荐

  1. 两个数组的交集 II

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

  2. 数组-两个数组的交集(两个集合)

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

  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. Leetcode 350. 两个数组的交集 II 解题思路及C++实现

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

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

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

  7. php两个数组找公共部分,PHP开发中如何查找两个数组的交集

    在PHP中,可以使用内置函数array_intersect()来查找两个数组的交集,它可以返回两个数组的公共元素(相交部分).下面我们就来具体介绍一下. array_intersect()函数 基本语 ...

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

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

  9. 349. 两个数组的交集 golang

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

最新文章

  1. 分享Java面试中的几个重要基础问题
  2. 桔子浏览器电脑版不显示图片怎么办 看不到图片怎么解决
  3. rect函数_Python基础入门(9):从函数到高级魔法方法--阿里云天池
  4. idea编译器没有tomcat的选项解决方案
  5. win10系统自带图标/壁纸位置
  6. 移动机顶盒migu-jt-u1 unt400c刷机 hi3798 root
  7. html水晶按钮图片,PS按钮制作高级教程之网页常用水晶按钮
  8. EIDROS3.9学习(一)
  9. Python实例:七段数码管
  10. 如何写出简洁明了的开发功能说明书
  11. epub android 乱码,ibooks打开含iframe的epub乱码
  12. 总结定时器设计方法_超实用!网站导航栏设计方法总结
  13. 这老铁教你如何制作亮眼简厉!!
  14. 数据分析统计基础(三):差异性/相关性分析
  15. ElasticSearch学习2_Java version:1.7.0_51 suffers from critical bug及ES对JDK版本要求
  16. “不为圣贤,便为禽兽。莫问收获,但问耕耘”
  17. 网络ID、主机ID和子网掩码有何区别?
  18. win7修复ubuntu的引导
  19. Python3 02 数字(Number)、字符串、列表、元组、字典
  20. 数据结构(十一) -- C语言版 -- 树 - 二叉树基本概念

热门文章

  1. 华为手机录制屏幕视频的详细操作
  2. WFP之关联上下文数据以及注意事项
  3. 冲马桶你会盖盖子吗?
  4. Nginx反向代理,返回405错误的解决办法
  5. 40 个超棒的免费 Bootstrap HTML5 网站模板
  6. Android全面屏最大纵横比适配
  7. hdu 6863 Isomorphic Strings
  8. (解决)application.yml文件图标不能正常显示为绿色叶子
  9. 【微信小程序】之自定义顶部导航页签
  10. GoPhish钓鱼邮件