给出多个数组,求它们的交集。输出他们交集的大小。

在线评测地址:LintCode 领扣

样例 1:

 输入:  [[1,2,3],[3,4,5],[3,9,10]]输出:  1解释:只有3出现在三个数组中。

样例 2:

 输入: [[1,2,3,4],[1,2,5,6,7][9,10,1,5,2,3]]输出:  2解释:交集是[1,2].

【题解】

解题思路

由于题目数据中每个数组里的元素都没有重复,而这道题目又要求求交集,交集中的元素一定在每一个数组中都出现过,所以交集中的元素在所有数组中的出现次数一定等于数组个数。所以使用MapPython中的字典数据结构就可以统计数字出现的次数,就可以解决问题了。

代码思路

  1. 建立映射。
  2. 统计所有数字出现的次数。
  3. 在映射的键值集合中找出出现次数等于数组个数的数量。

复杂度分析

设总的数字个数为N

时间复杂度

  • 在哈希表实现中时间复杂度是O(N),在二叉树实现中,时间复杂度是O(NlogN)

空间复杂度

  • 空间复杂度为O(N)
public class Solution {/*** @param arrs: the arrays* @return: the number of the intersection of the arrays*/public int intersectionOfArrays(int[][] arrs) {Map<Integer, Integer> count = new HashMap<Integer, Integer>();// 记录每个数的出现次数for (int[] arr: arrs) {for (int x: arr) {if (! count.containsKey(x)) {count.put(x, 0);}count.put(x, (int)count.get(x) + 1);}}// 某个数出现次数等于数组个数,代表它在所有数组中都出现过int result = 0;for (int x: count.keySet()) {if (count.get(x) == arrs.length) {result++;}}return result;}
}

更多题解参见:九章算法

多个数字数组_九章算法 | 谷歌面试题:多个数组的交集相关推荐

  1. arrays合并两个数组_九章算法 | 字节跳动面试题:合并k个排序数组

    将 k 个有序数组合并为一个大的有序数组. 在线评测地址:LintCode 领扣 样例 1: Input: [[1, 3, 5, 7],[2, 4, 6],[0, 8, 9, 10, 11]] Out ...

  2. 编号是i的结点所在的层次号是_九章算法 | 微软面试题:二叉树的锯齿形层次遍历...

    给出一棵二叉树,返回其节点值的锯齿形层次遍历(先从左往右,下一层再从右往左,层与层之间交替进行) 在线评测地址:LintCode 领扣 样例 1: 输入:{1,2,3} 输出:[[1],[3,2]] ...

  3. 最长回文子串动态规划_九章算法 | 微软面试题:最长回文子串

    给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你可以假定只有一个满足条件的最长回文串. 在线评测地址:LintCode 领扣 样例 1: 输入:"abcdzdcab&quo ...

  4. 动态规划法求最大字段和时间复杂度_九章算法 | 动态规划:最长上升子序列

    给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度. 在线评测地址:LintCode 领扣 说明 最长上升子序列的定义: 最长上升子序列问题是在一个无序的给定序列中找到一个尽可能长的由低 ...

  5. n皇后问题c语言_九章算法 | N皇后问题

    n皇后问题是将n个皇后放置在n*n的棋盘上,皇后彼此之间不能相互攻击(任意两个皇后不能位于同一行,同一列,同一斜线). 给定一个整数n,返回所有不同的n皇后问题的解决方案. 每个解决方案包含一个明确的 ...

  6. 八皇后时间复杂度_九章算法 | N皇后问题

    n皇后问题是将n个皇后放置在n*n的棋盘上,皇后彼此之间不能相互攻击(任意两个皇后不能位于同一行,同一列,同一斜线). 给定一个整数n,返回所有不同的n皇后问题的解决方案. 每个解决方案包含一个明确的 ...

  7. 九章算法 | Google 面试题:Same Number

    撰文 | JZ 专栏 | 九章算法 题目描述 给一个数组,如果数组中存在相同数字,且相同数字的距离小于给定值k,输出YES,否则输出NO. 思路点拨 用HashMap记录每个元素最后一次出现的位置,遍 ...

  8. 九章算法 | Facebook 面试题 : Backpack VI 背包算法

    2017-12-21 题目描述 给一个nums[]数组,如[1, 2, 4] 将这些数组合使得: 这些数的和是给出的一个target,如使这些数的和等于4,求这样的组合有多少个? 样例 样例 [1, ...

  9. 九章算法 | Google面试题:堆化

    描述 给出一个整数数组,堆化操作就是把它变成一个最小堆数组. 对于堆数组A,A[0]是堆的根,并对于每个A[i],A [i * 2 + 1]是A[i]的左儿子并且A[i * 2 + 2]是A[i]的右 ...

最新文章

  1. 打印机扫描后旋转纸张_档案扫描好帮手,富士通ix1500无线双面高速扫描仪评测...
  2. springboot(二):web综合开发
  3. HTML5 中的下载简化处理
  4. 47 MM配置-采购-条件-定价过程-定义方案确认
  5. 前端拦截url参数xss攻击_闲庭信步聊前端 - 漫谈XSS
  6. 撤销本地的commit
  7. 并查集(2)-按秩合并和路径压缩
  8. Invalid escape sequence(valid ones are \b \t \n \f \r \ \' \\)
  9. StructureMap 作为 ASP.NET MVC 的 DI 框架的使用实例
  10. 【Java与智能设备】Ch0402 Activity的生命周期
  11. python代码如何转java_将简单的Python代码转换为Java方法
  12. 【学生信息管理系统】-优化篇1
  13. 灵格斯怎么屏幕取词_屏幕取词插件 -- Lingoes Translator 灵格斯词霸
  14. 攻略:简易VBS病毒制作
  15. 智能插帧,打造丝滑视频体验
  16. 2、【易混淆概念集】-前三章 2 净现值 NPV 内部报酬率 IRR 投资回报率 ROI
  17. 环境变量(PATH)的那些事
  18. 新买的显示器怎么测试软件,新买的电视如何检测屏幕?记住这个方法
  19. 亚马逊html邮件,创建电子邮件模板 - Amazon Pinpoint
  20. R语言使用pdf函数将可视化图像结果保存到pdf文件中、使用pdf函数打开图像设备、使用dev.off函数关闭图像设备、自定义width参数和height参数指定图像的宽度和高度

热门文章

  1. c语言malloc和直接声明,问下关于malloc的声明问题
  2. php面向对象初始化一次,php单例模式实现(对象只被创建一次)
  3. [数学][欧拉降幂定理]Exponial
  4. 2017-2018-2 20179306 《网络攻防技术》第十周作业
  5. Zabbix实战-简易教程--订阅类
  6. 【特效】hover效果之四线动画
  7. 开发工具IDEA的使用
  8. 在Linux-0.11中实现基于内核栈切换的进程切换
  9. C# 调用命令行,参数有空格
  10. 听 Fabien Potencier 谈Symfony2 之 《What is Symfony2 ?》