【leetcode75】Intersection of Two Arrays(数组的交集)
题目描述:
给定两个数组求他们的公共部分,输出形式是数组,相同的元素只是输出一次
例如:
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(数组的交集)相关推荐
- 53 两数组的交集(Intersection of Two Arrays)
文章目录 1 题目 2 解决方案 2.1 思路 2.3 时间复杂度 2.4 空间复杂度 3 源码 3.1 排序+合并的方式 3.2 二分搜索的方式 3.3 哈希表的方式 1 题目 题目:两数组的交集( ...
- 350. Intersection of Two Arrays II 两个数组的交集 II
Title 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2] 示例 2: 输入: nums1 = ...
- LeetCode算法题350:两个数组的交集II(Intersection of Two Arrays II)
技术交流可以加: 本人微信:xcg852390212 本人qq:852390212 学习交流qq群1(已满): 962535112 学习交流qq群2: 780902027 两个数组的交集II Leet ...
- [LeetCode] Intersection of Two Arrays 两个数组相交
Given two arrays, write a function to compute their intersection. Example: Given nums1 = [1, 2, 2, 1 ...
- LeetCode 350. 两个数组的交集 II ntersection of Two Arrays II
Table of Contents 一.中文版 二.英文版 三.My answer 四.解题报告 一.中文版 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2 ...
- Python计算两个numpy数组的交集(Intersection)实战:两个输入数组的交集并排序、获取交集元素及其索引、如果输入数组不是一维的,它们将被展平(flatten),然后计算交集
Python计算两个numpy数组的交集(Intersection)实战:两个输入数组的交集并排序.获取交集元素及其索引.如果输入数组不是一维的,它们将被展平(flatten),然后计算交集 目录
- leetcode初级算法4.两个数组的交集 II
leetcode初级算法4.两个数组的交集 II 仅为个人刷题记录,不提供解题思路 题解与收获 我的解法:(总结在代码中) public int[] intersect(int[] nums1, in ...
- 利用Underscore求数组的交集、并集和差集
1 数组交集函数--intersection 数组的交集是指包含多个数组中的共同元素的一个数组,求数组的交集就是找出给定数组中的共有元素. 下面实现一个求两个数组交集的函数. 判断数组是够包含指定值, ...
- php 两个数组 交集_两个数组的交集
给定两个数组,编写一个函数来计算它们的交集. 示例1: 输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2] 示例2: 输入:nums1 = [4,9,5], num ...
- 多个数字数组_九章算法 | 谷歌面试题:多个数组的交集
给出多个数组,求它们的交集.输出他们交集的大小. 在线评测地址:LintCode 领扣 样例 1: 输入: [[1,2,3],[3,4,5],[3,9,10]]输出: 1解释:只有3出现在三个数组中. ...
最新文章
- flask url构建_如何为生产构建构建Flask-RESTPlus Web服务
- linu逻辑分区动态调整大小
- 《口袋奇兵》开发商引入阿里云PolarDB数据库 IT成本降幅达50%
- [coco2d]pageView:addPage时,page无法对齐
- 12/100. Diameter of Binary Tree
- maven系列一:pom.xml文件详解
- ribbon重试机制
- 【Spring开发】—— Spring Core
- 网络从业人员职业规划路线图
- python txt转Excel
- Linux快捷键的使用
- 初识 Cisco Packet Tracer 思科模拟器 入门基础教学
- 年仅30岁!腾讯游戏程序员毛星云意外身故。。。
- python进行删除标点符号
- 计算机组装与维护选教材,计算机组装与维护校本教材.doc
- Keil报错:Libraries\CMSIS\stm32f10x.h(298): error: #67: expected a }
- 秘密打印机涉密计算机之间,涉密打印机与涉密计算机之间采用什么方式
- 波士顿房价预测(线性回归、岭回归、决策树)
- close函数 qt_QT5笔记:关闭应用程序和窗口的函数
- Unity 打包APK 适配全面屏、刘海屏、水滴屏、挖孔屏
热门文章
- 凤凰网制作的 “中国挺住” 桌面与MSN,QQ头像下载
- 软件访问转向本地_我是如何从完整的初学者转向软件开发人员的,以及如何做到的...
- python中执行linux命令(调用linux命令)_Python调用Linux bash命令
- docker mysql详解_Docker轻松入门(详解)
- JavaScript实现鼠标拖拽登录框
- 使用LaTeX排版如何方便地引用多篇参考文献(不使用插件)
- 学java培训开发需要多少钱
- 零基础参加java培训主要学什么
- Java培训找什么样的机构比较好
- 中国研制量子计算机成功,中国宣布研发量子计算机,这次很可能真的要领先世界!速度太快!...