在大多数情况,也就是一般的情况下,大家都能想出最暴力的解法,通常也就是采用遍历或者枚举的办法来解决问题。

该题需要找出两个数组的交集,最简单的一个办法就是用A数组里面的所有数去匹配B数组里面的数。假设两个数组的大小都是n,那么这种遍历的时间复杂度为O(n^2)。这个也是最复杂的情况了。

但是我们可以想出用哈希函数或者哈希表来解决问题。也就是将数组A哈希到哈希表中,然后继续将数组B哈希到哈希表中,如果发生哈希碰撞则统计加1,最后可以得出数组的交集。时间复杂度也就是哈希所有元素的复杂度O(n)。

直接上代码:

import java.util.Hashtable;public class Test1 {public static void findSame(int a[],int b[]){//同样的KEY就会覆盖前面的VALUE.所以即使数组a中有重复值也没必要先排重。Hashtable<Integer,Integer> ht =new Hashtable<>();for(int i=0;i<a.length;i++){ht.put(a[i],a[i]);}for(int j=0;j<b.length;j++){if(ht.get(b[j])!=null){System.out.print(b[j]+"   ");}}}public static void main(String[] args) {int a[]={1,2,2,3,3,4,5,6,7};int b[]={2,3};findSame(a,b);}
}

转载于:https://www.cnblogs.com/cat520/p/9378472.html

利用哈希map快速判断两个数组的交集相关推荐

  1. 快速判断两个字符串是否相等:字符串哈希

    LeetCode 2430. 对字母串可执行的最大删除数 给你一个仅由小写英文字母组成的字符串 s .在一步操作中,你可以: 删除 整个字符串 s ,或者 对于满足 1 < = i < = ...

  2. 算法训练Day6 | LeetCode:242. 有效的字母异位词(数组作哈希表);349. 两个数组的交集(Set作哈希表);202.快乐数 (Set作哈希表);1. 两数之和(Map作哈希表)

    目录 LeetCode242. 有效的字母异位词 方法:数组作哈希表 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 Leetcode349. 两个数组的交集 方法一:用Set作HashMa ...

  3. php 判断两个数组是否相等

    如何判断两个数组相等呢?其实很简单,用 == 或者 === 就可以了 那像 array('k'=>array())这样的多维数组能用如上方法判断相等吗?当然也可以. 若数组是数字索引的,就要注意 ...

  4. 编写程序判断两个数组是否相等,然后编写一段类似的程序比较两个 vector。

    /*编写程序判断两个数组是否相等,然后编写一段类似的程 序比较两个 vector.*/ /* bool judge1(size_t* a, size_t* b, int n) {     for (s ...

  5. 二维数组:随机生产,遍历,判断两个数组一维二维长度,和内容是否一致

    import java.util.Random;/*** 1,定义第一个方法,传入数组长度,返回一个1维和2维长度都完全相同的数组* 2.定义一个方法,传入两个数二维组,判断两个数组是否完全一致:一维 ...

  6. 判断两个数组中是否存在相同的数字

    判断两个数组中是否存在相同的数字 给定两个排好序的数组,怎样高效得判断这两个数组中存在相同的数字? 这个问题首先想到的是一个O(nlogn)的算法.就是任意挑选一个数组,遍历这个数组的所有元素,遍历过 ...

  7. 判断两个数组有相同的数据

    判断两个数组是否含有重复数据,比如说 [1,3,5,7],和 [1,2,3,5,8,9] 有 1,3,5三个值是相同的,那么得到的应该是true let arr1 = [1,2,3,5,8,9] le ...

  8. C语言——判断两个数组中是否有相同的元素

    题目:判断两个数组中是否有相同的元素,有就输出"有",没有就输出"没有". 解法一:用第一个数组中的所有元素与第二个数组中的所有元素相比较,若有相同元素,则停止 ...

  9. Python中用于判断两个集合的交集是否为空集isdisjoint()方法

    [小白从小学Python.C.Java] [Python全国计算机等级考试] [Python数据分析考试必会题] ​● 标题与摘要 Python中用于判断两个集合的交集是否为空集 isdisjoint ...

最新文章

  1. 在?三缺一,来斗个地主——肝个斗地主案例(java)
  2. web 静态页面和动态页面的区别
  3. Mysql导出函数、存储过程
  4. leetcode-139-单词拆分
  5. linux之写C代码出现warning: format not a string literal and no format arguments [-Wformat-security]
  6. linux入门指令 详解,Linux基础命令之mktemp详解
  7. tesseract库
  8. 禅道PMS兼容redmine用户认证接口
  9. 正则表达式(思维导图速查版)
  10. fastdfs 报错 err: TrackerTask RecvHeader recv resp status 28 != 0
  11. activexobject对象不能创建_Java面向对象总结
  12. myeclipse 扩展内存大小
  13. Dos攻击与DDos攻击
  14. 生物化学-第二章-氨基酸
  15. 单相全控桥有源逆变电路matlab仿真,单相桥式全控整及有源逆变电路的MATLAB仿真.doc...
  16. linux的man命令功能,Linux中的MAN命令
  17. 三个小故事让你一次记住双拼输入法口诀
  18. intellIj idea修改英文字体解决大写的“I”和小写的“l”显示冲突问题
  19. python条形码库_python批量生成条形码的示例
  20. c ajax 图表,Pyechart Django:前端和后端分离(Ajax),多图表组合显示,pyechartsdjango,前后,ajax,合并,展示...

热门文章

  1. 当前脚本文件中调用另外一个脚本
  2. Nginx 配置虚拟主机
  3. 算法工程师常用Linux命令总结
  4. Quick BI功能篇之(一):20分钟入门
  5. (二)Python 装饰器
  6. 检测客户端是否安装 Silverlight 插件和判断IE是否安装或支持Silverlight(限IE)
  7. 【174个】最全DICOM资料汇总[截止10.10.20][中国数字医疗论坛]
  8. 回答朋友的问题(关于 RTEMS 学习)
  9. 论文的事情终于可以告一段落了
  10. 物联网大数据如何改善农业运营