这个问题本质上减少到一个连接操作,然后是一个过滤器操作(删除重复,只保留内部匹配).

由于输入都已经排序,所以可以通过O(O(size(a)size(b))的merge join来有效地实现连接.

过滤器操作将为O(n),因为连接的输出被排序,并且要删除重复项,所有您需要做的是检查每个元素是否与之​​前的元素相同.仅过滤内部匹配是微不足道的,您只是丢弃任何不匹配的元素(外连接).

并行机制(在连接和过滤器中)都有机会实现更好的性能.例如,Hadoop上的Apache Pig框架提供了parallel implementation的合并连接.

在性能和复杂性之间存在明显的权衡(从而可维护性).所以我会说一个很好的答案面试问题真的需要考虑到性能要求.

>设置比较 – O(nlogn) – 如果没有性能问题,相对较慢,非常简单.简单胜利.

>合并连接过滤器 – O(n) – 快速,容易出现编码错误,使用if

表现是一个问题.理想情况下,尝试利用现有库来执行此操作,或者甚至在适当的情况下使用数据库.

>并行实现 – O(n / p) – 非常

快速,需要其他基础设施到位,如果卷是使用的

非常大,预计会增长,这是一个主要的表现

瓶颈.

(另请注意,intersectSortedArrays中的函数本质上是一个修改的合并连接,其中过滤器在连接期间完成,您可以稍后过滤,尽管内存容量略有增加).

最后的想法

事实上,我怀疑大多数现代商业RDBMS在实现联接时提供线程并行性,所以Hadoop版本提供的是机器级并行性(分发).从设计的角度来看,也许一个很好的简单的解决方案就是将数据放在数据库上,A和B上的索引(有效排序数据),并使用SQL内部连接.

java 两个数组交叉_java – 如何交叉两个没有重复的排序整数数组?相关推荐

  1. java从数组查找指定整数_如何在Java中使用重复项查找整数数组中的K个缺失数字?...

    java从数组查找指定整数 自从我讨论任何编码或算法面试问题以来已经有很长时间了,因此我想重新考虑一种最流行的基于数组的编码问题,即在给定数组中查找缺失的数字. 在进行编程工作面试之前,您可能已经听说 ...

  2. 如何在Java中使用重复项查找整数数组中的K个缺失数字?

    自从我讨论任何编码或算法面试问题以来已经有很长时间了,因此我想重新考虑一种最流行的基于数组的编码问题,即在给定数组中查找缺失的数字. 在进行编程工作面试之前,您可能已经听说过或看到过此问题,但是面试官 ...

  3. 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集

    package week_01;import java.util.ArrayList; import java.util.List;/* 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的 ...

  4. java中集合类的转换_Java中的两个常用工具类及集合数组的相互转换

    为了编程人员的方便及处理数据的安全性,Java特别提供了两个非常有用的工具类: 一.Collections 1.Collections类的特点: 集合框架的工具类.里面定义的都是静态方法. 2.Col ...

  5. 奇偶数排序--整数数组的奇偶数分开(小米公司笔试题)

    题目:在一个N个整数数组里,有多个奇数和偶数,设计一种排序算法,使得所有的奇数都在左边,偶数都在右边,code实现. 本题就是快速排序的变形题.就是把快排的partition划分区间过程的进行改变.采 ...

  6. java array 元素的位置_java中的两种排序工具Arrays和Collections的使用

    java中的排序工具主要是有两个Arrays和Collections.我们一个一个来讲解. 本来写好了每一种方法的测试代码,后来又给删了,因为我觉得如果想要去了解的话,可以直接查看这些常用的即可.因为 ...

  7. java 数组正则表达式_java正则表达式实现提取需要的字符并放入数组【ArrayList数组去重复功能】...

    本文实例讲述了java正则表达式实现提取需要的字符并放入数组.分享给大家供大家参考,具体如下: 这里演示java正则表达式提取需要的字符并放入数组,即arraylist数组去重复功能. 具体代码如下: ...

  8. java 两个list相等_java 怎么比较两个list是否相同

    判断两个list集合的元素个数是否相等.如果不相等则两个list集合也不相等,判断结束,如果相等则进入第二步判断 判断list1的元素是否全部在list2中.遍历list1,取出list1中的元素,依 ...

  9. java方向考什么证_java认证证书两个工作方向

    java认证证书两个工作方向: Java程序员 概述:本课程使学员掌握如何使用标准Java Development kit(JDK)开发应用程序和applets.在本课程中您将学会Java语言的语法. ...

最新文章

  1. Yocto基本概念及介绍
  2. java与sql用windows身份连接,使用Windows身份验证将我的Sql Server 2008数据库连接到我的Java项目...
  3. 前端接入HTTP协议浅析
  4. Java中String类、字符串常量池、字符串常用方法
  5. Memcache安全性
  6. php中怎么应用css文件,利用PHP怎么下载CSS文件中的图片
  7. Python-斗地主原来是这样的引擎!会了Python之后,我就没输过豆子了!
  8. Java™ 教程(原子变量)
  9. python基础编程语法-Python基础及语法(十三)
  10. Maclean写的Oracle入门书
  11. window 下 go lang 环境变量一键批处理设置
  12. 51单片机c语言头文件大全,单片机stc89(STC89C52,C51)系列头文件.doc.doc
  13. 基于C# Winform的音量控制程序设计
  14. 数据安全--安全网关
  15. 日常css小tips
  16. 【Bug解决】curl: (7) Failed connect to 192.168.159.133:8888; No route to host
  17. js问题之判断是否是火狐、IE浏览器
  18. 百度飞浆之PaddleHub视频移动人脸识别
  19. 有时候没必要造轮子,我们要学会合理地使用轮子
  20. 红包系统流量高并发技术详解

热门文章

  1. 云现场 | 别等到WiFi断了 才明白云管理网络的重要性
  2. git wechat.class.php,wechat-php-sdk/qywechat.class.php at master · gitye/wechat-php-sdk · GitHub
  3. 大数据计算存储资源池_管家实践:轻松玩转大数据计算服务
  4. 初二物理模型有哪些_暑假新初二、新初三的数学该怎么学,教辅怎么买,题该怎么刷?看这里~...
  5. Flowable 数据库表结构 ACT_RU_EXECUTION
  6. centos7以普通用户开机启动某个服务或者指定脚本
  7. flowable实战(四)flowable任务实例管理接口
  8. yii2 mysql in_yii2 mysql数据库读写分离配置
  9. 前端详细设计文档怎么写_UI设计师简历应该怎么写?
  10. 福建学业水平测试计算机考点大纲,福建高中信息技术学业水平考试说明大纲