题目描述:

给定两个数组求他们的公共部分,输出形式是数组,相同的元素只是输出一次

例如:

nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2].

原文描述:

Given two arrays, write a function to compute their intersection.

Example:

Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2].

Note:

Each element in the result must be unique.
The result can be in any order.

思路一:

1.使用HashMap(Integer,Boolean)数据结构,首先是便利Array1,放入map1
2.遍历Array2,判断map1是否包含,存入map2
3.取出map2的数据,存入数组输出

代码:

public class Solution {/*** @param nums1 an integer array* @param nums2 an integer array* @return an integer array*/public int[] intersection(int[] nums1, int[] nums2) {HashMap<Integer, Boolean> map1 = new HashMap<Integer, Boolean>();HashMap<Integer, Boolean> intersectMap = new HashMap<Integer, Boolean>();for (int i = 0; i < nums1.length; i++) {if (!map1.containsKey(nums1[i])) {map1.put(nums1[i], true);}}for (int j = 0; j < nums2.length; j++) {if (map1.containsKey(nums2[j]) && !intersectMap.containsKey(nums2[j])) {intersectMap.put(nums2[j], true);}}int[] result = new int[intersectMap.size()];int i = 0;for (Integer e : intersectMap.keySet()) {result[i] = e;i++;}return result;}
}

思路二:

  • 先把两个数组排序
  • 索引i,j分别代表Array1和Array2,相等都加1,谁小谁对应的索引加1 -

代码:

public class Solution {/*** @param nums1 an integer array* @param nums2 an integer array* @return an integer array*/public int[] intersection(int[] nums1, int[] nums2) {Arrays.sort(nums1);Arrays.sort(nums2);int i = 0, j = 0;int[] temp = new int[nums1.length];int index = 0;while (i < nums1.length && j < nums2.length) {if (nums1[i] == nums2[j]) {if (index == 0 || temp[index - 1] != nums1[i]) {temp[index++] = nums1[i];}i++;j++;} else if (nums1[i] < nums2[j]) {i++;} else {j++;}}int[] result = new int[index];for (int k = 0; k < index; k++) {result[k] = temp[k];}return result;}
}

更多leetcode题目,请看我的leetcode专栏。链接如下:

leetcode专栏

我的微信二维码如下,欢迎交流讨论

欢迎关注《IT面试题汇总》微信订阅号。每天推送经典面试题和面试心得技巧,都是干货!

微信订阅号二维码如下:

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>

转载于:https://www.cnblogs.com/fengsehng/p/6048675.html

【leetcode75】Intersection of Two Arrays(数组的交集)相关推荐

  1. 53 两数组的交集(Intersection of Two Arrays)

    文章目录 1 题目 2 解决方案 2.1 思路 2.3 时间复杂度 2.4 空间复杂度 3 源码 3.1 排序+合并的方式 3.2 二分搜索的方式 3.3 哈希表的方式 1 题目 题目:两数组的交集( ...

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

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

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

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

  4. [LeetCode] Intersection of Two Arrays 两个数组相交

    Given two arrays, write a function to compute their intersection. Example: Given nums1 = [1, 2, 2, 1 ...

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

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

  6. Python计算两个numpy数组的交集(Intersection)实战:两个输入数组的交集并排序、获取交集元素及其索引、如果输入数组不是一维的,它们将被展平(flatten),然后计算交集

    Python计算两个numpy数组的交集(Intersection)实战:两个输入数组的交集并排序.获取交集元素及其索引.如果输入数组不是一维的,它们将被展平(flatten),然后计算交集 目录

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

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

  8. 利用Underscore求数组的交集、并集和差集

    1 数组交集函数--intersection 数组的交集是指包含多个数组中的共同元素的一个数组,求数组的交集就是找出给定数组中的共有元素. 下面实现一个求两个数组交集的函数. 判断数组是够包含指定值, ...

  9. php 两个数组 交集_两个数组的交集

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

  10. 多个数字数组_九章算法 | 谷歌面试题:多个数组的交集

    给出多个数组,求它们的交集.输出他们交集的大小. 在线评测地址:LintCode 领扣 样例 1: 输入: [[1,2,3],[3,4,5],[3,9,10]]输出: 1解释:只有3出现在三个数组中. ...

最新文章

  1. flask url构建_如何为生产构建构建Flask-RESTPlus Web服务
  2. linu逻辑分区动态调整大小
  3. 《口袋奇兵》开发商引入阿里云PolarDB数据库 IT成本降幅达50%
  4. [coco2d]pageView:addPage时,page无法对齐
  5. 12/100. Diameter of Binary Tree
  6. maven系列一:pom.xml文件详解
  7. ribbon重试机制
  8. 【Spring开发】—— Spring Core
  9. 网络从业人员职业规划路线图
  10. python txt转Excel
  11. Linux快捷键的使用
  12. 初识 Cisco Packet Tracer 思科模拟器 入门基础教学
  13. 年仅30岁!腾讯游戏程序员毛星云意外身故。。。
  14. python进行删除标点符号
  15. 计算机组装与维护选教材,计算机组装与维护校本教材.doc
  16. Keil报错:Libraries\CMSIS\stm32f10x.h(298): error: #67: expected a }
  17. 秘密打印机涉密计算机之间,涉密打印机与涉密计算机之间采用什么方式
  18. 波士顿房价预测(线性回归、岭回归、决策树)
  19. close函数 qt_QT5笔记:关闭应用程序和窗口的函数
  20. Unity 打包APK 适配全面屏、刘海屏、水滴屏、挖孔屏

热门文章

  1. 凤凰网制作的 “中国挺住” 桌面与MSN,QQ头像下载
  2. 软件访问转向本地_我是如何从完整的初学者转向软件开发人员的,以及如何做到的...
  3. python中执行linux命令(调用linux命令)_Python调用Linux bash命令
  4. docker mysql详解_Docker轻松入门(详解)
  5. JavaScript实现鼠标拖拽登录框
  6. 使用LaTeX排版如何方便地引用多篇参考文献(不使用插件)
  7. 学java培训开发需要多少钱
  8. 零基础参加java培训主要学什么
  9. Java培训找什么样的机构比较好
  10. 中国研制量子计算机成功,中国宣布研发量子计算机,这次很可能真的要领先世界!速度太快!...