java 两个数组交叉_java – 如何交叉两个没有重复的排序整数数组?
这个问题本质上减少到一个连接操作,然后是一个过滤器操作(删除重复,只保留内部匹配).
由于输入都已经排序,所以可以通过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 – 如何交叉两个没有重复的排序整数数组?相关推荐
- java从数组查找指定整数_如何在Java中使用重复项查找整数数组中的K个缺失数字?...
java从数组查找指定整数 自从我讨论任何编码或算法面试问题以来已经有很长时间了,因此我想重新考虑一种最流行的基于数组的编码问题,即在给定数组中查找缺失的数字. 在进行编程工作面试之前,您可能已经听说 ...
- 如何在Java中使用重复项查找整数数组中的K个缺失数字?
自从我讨论任何编码或算法面试问题以来已经有很长时间了,因此我想重新考虑一种最流行的基于数组的编码问题,即在给定数组中查找缺失的数字. 在进行编程工作面试之前,您可能已经听说过或看到过此问题,但是面试官 ...
- 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集
package week_01;import java.util.ArrayList; import java.util.List;/* 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的 ...
- java中集合类的转换_Java中的两个常用工具类及集合数组的相互转换
为了编程人员的方便及处理数据的安全性,Java特别提供了两个非常有用的工具类: 一.Collections 1.Collections类的特点: 集合框架的工具类.里面定义的都是静态方法. 2.Col ...
- 奇偶数排序--整数数组的奇偶数分开(小米公司笔试题)
题目:在一个N个整数数组里,有多个奇数和偶数,设计一种排序算法,使得所有的奇数都在左边,偶数都在右边,code实现. 本题就是快速排序的变形题.就是把快排的partition划分区间过程的进行改变.采 ...
- java array 元素的位置_java中的两种排序工具Arrays和Collections的使用
java中的排序工具主要是有两个Arrays和Collections.我们一个一个来讲解. 本来写好了每一种方法的测试代码,后来又给删了,因为我觉得如果想要去了解的话,可以直接查看这些常用的即可.因为 ...
- java 数组正则表达式_java正则表达式实现提取需要的字符并放入数组【ArrayList数组去重复功能】...
本文实例讲述了java正则表达式实现提取需要的字符并放入数组.分享给大家供大家参考,具体如下: 这里演示java正则表达式提取需要的字符并放入数组,即arraylist数组去重复功能. 具体代码如下: ...
- java 两个list相等_java 怎么比较两个list是否相同
判断两个list集合的元素个数是否相等.如果不相等则两个list集合也不相等,判断结束,如果相等则进入第二步判断 判断list1的元素是否全部在list2中.遍历list1,取出list1中的元素,依 ...
- java方向考什么证_java认证证书两个工作方向
java认证证书两个工作方向: Java程序员 概述:本课程使学员掌握如何使用标准Java Development kit(JDK)开发应用程序和applets.在本课程中您将学会Java语言的语法. ...
最新文章
- Yocto基本概念及介绍
- java与sql用windows身份连接,使用Windows身份验证将我的Sql Server 2008数据库连接到我的Java项目...
- 前端接入HTTP协议浅析
- Java中String类、字符串常量池、字符串常用方法
- Memcache安全性
- php中怎么应用css文件,利用PHP怎么下载CSS文件中的图片
- Python-斗地主原来是这样的引擎!会了Python之后,我就没输过豆子了!
- Java™ 教程(原子变量)
- python基础编程语法-Python基础及语法(十三)
- Maclean写的Oracle入门书
- window 下 go lang 环境变量一键批处理设置
- 51单片机c语言头文件大全,单片机stc89(STC89C52,C51)系列头文件.doc.doc
- 基于C# Winform的音量控制程序设计
- 数据安全--安全网关
- 日常css小tips
- 【Bug解决】curl: (7) Failed connect to 192.168.159.133:8888; No route to host
- js问题之判断是否是火狐、IE浏览器
- 百度飞浆之PaddleHub视频移动人脸识别
- 有时候没必要造轮子,我们要学会合理地使用轮子
- 红包系统流量高并发技术详解
热门文章
- 云现场 | 别等到WiFi断了 才明白云管理网络的重要性
- git wechat.class.php,wechat-php-sdk/qywechat.class.php at master · gitye/wechat-php-sdk · GitHub
- 大数据计算存储资源池_管家实践:轻松玩转大数据计算服务
- 初二物理模型有哪些_暑假新初二、新初三的数学该怎么学,教辅怎么买,题该怎么刷?看这里~...
- Flowable 数据库表结构 ACT_RU_EXECUTION
- centos7以普通用户开机启动某个服务或者指定脚本
- flowable实战(四)flowable任务实例管理接口
- yii2 mysql in_yii2 mysql数据库读写分离配置
- 前端详细设计文档怎么写_UI设计师简历应该怎么写?
- 福建学业水平测试计算机考点大纲,福建高中信息技术学业水平考试说明大纲