[经典面试题][阿里]三元组最小距离
题目
已知三个升序整数数组a[l], b[m]和c[n]。请在三个数组中各找一个元素,是的组成的三元组距离最小。三元组的距离定义是:假设a[i]、b[j]和c[k]是一个三元组,那么距离为:
Distance = max(|a[ I ] – b[ j ]|, |a[ I ] – c[ k ]|, |b[ j ] – c[ k ]|)
请设计一个求最小三元组距离的最优算法,并分析时间复杂度。
思路
保持三个下标索引 i,j,k,找出a[i],b[j],c[k]里最小的元素。如果a[i]最小, 则下一次循环 i=i+1, 其他两个索引不变。如果b[j]最小, 则下一次循环 j=j+1, 其他两个索引不变。如果c[k]最小, 则下一次循环 k=k+1, 其他两个索引不变。如此循环,直至最小的数对应的下标到达该数组尾部。记录最小距离。
时间复杂度:O(l+m+m) (每次循环总有一个下标走了一步)。
代码
/*---------------------------------------------* 日期:2015-02-21* 作者:SJF0115* 题目: 三元组最小距离* 来源:阿里* 博客:-----------------------------------------------*/#include <iostream>#include <climits>#include <algorithm>using namespace std;class Solution {public:int MinDistance(int a[],int l,int b[],int m,int c[],int n){if(l <= 0 || n <= 0 || m <= 0){return -1;}//ifint min = INT_MAX;int dis = 0,first = 0,second = 0,third = 0;for(int i = 0,j = 0,k = 0;i < l && j < m && k < n;){dis = max(max(abs(a[i]-b[j]),abs(a[i]-c[k])),abs(b[j]-c[k]));if(dis < min){min = dis;first = i;second = j;third = k;}//ifif(a[i] < b[j]){if(a[i] < c[k]){++i;}//ifelse{++k;}//else}//ifelse{if(b[j] < c[k]){++j;}//ifelse{++k;}//else}//else}//forcout<<"First->"<<first<<" Second->"<<second<<" Third->"<<third<<endl;return min;}};int main() {Solution solution;int a[] = {5,16,20};int b[] = {13,14,15,17,35};int c[] = {19,22,24,29,32,42};int l = 3,m = 5,n = 6;int result = solution.MinDistance(a,l,b,m,c,n);cout<<result<<endl;}
如果有好的思路,可以留言。。。。。
[经典面试题][阿里]三元组最小距离相关推荐
- java面试题_阿里大厂流出的数百道 Java 经典面试题
BAT 常问的 Java基础39道常见面试题 1.八种基本数据类型的大小,以及他们的封装类 2.引用数据类型 3.Switch能否用string做参数 4.equals与==的区别 5.自动装箱,常量 ...
- 必读!53个Python经典面试题详解
作者 | Chris 翻译 | 苏本如,编辑 | 夕颜 题图 | 视觉中国 出品 | AI科技大本营(ID:rgznai100) 本文列出53个Python面试问题,并且提供了答案,供数科学家和软件工 ...
- Java经典面试题整理及答案详解(五)
Java经典面试题第五弹来啦!本节面试题主要是针对Java初级基础提问,看看你还记得多少? 1.String str="hello",这个字符串对象在栈内存中明明有一个引用(str ...
- 网易校园招聘历年经典面试题汇总:前端 岗
这个系列计划收集几百份朋友和读者的面经,作者合集方便查看,各位有面经屯着可以联系我哦 这个系列离结束差的还特别多,会更新涵盖所有一线大厂的所有岗位,也可以关注一下. 腾讯校园招聘历年经典面试题汇总:前 ...
- 网易校园招聘历年经典面试题汇总:C++研发岗
这个系列计划收集几百份朋友和读者的面经,作者合集方便查看,各位有面经屯着可以联系我哦 这个系列离结束差的还特别多,会更新涵盖所有一线大厂的所有岗位,也可以关注一下. 腾讯校园招聘历年经典面试题汇总:前 ...
- 百度校招历年经典面试题汇总:Java开发岗
这个系列计划收集几百份朋友和读者的面经,作者合集方便查看,各位有面经屯着可以联系我哦 这个系列离结束差的还特别多,会更新涵盖所有一线大厂的所有岗位,也可以关注一下. 百度校园招聘历年经典面试题汇总:C ...
- BAT Java面试笔试33题:JavaList、Java Map等经典面试题!答案汇总!
JavaList面试题汇总 1.List集合:ArrayList.LinkedList.Vector等. 2.Vector是List接口下线程安全的集合. 3.List是有序的. 4.ArrayLis ...
- java 1.8有没有jshell_收藏了800道Java后端经典面试题,分享给大家,希望你找到自己理想的Offer呀~...
前言 在茫茫的互联网海洋中寻寻觅觅,我收藏了800+道Java经典面试题,分享给你们.建议大家收藏起来,在茶余饭后拿出来读一读,以备未雨绸缪之需.另外,面试题答案的话,我打算后面慢慢完善在github ...
- 不知道不 OK!53 个 Python 经典面试题详解
作者 | Chris 翻译 | 苏本如,责编 | 夕颜 头图 | CSDN付费下载自视觉中国 出品 | CSDN(ID:CSDNnews) 以下为译文: 本文列出53个Python面试问题,并且提供了 ...
最新文章
- mysql新建表96k_innodb表 手工导入导出
- 宋君强 学科评估 计算机科学,三分钟,这个学院带你乘风破浪
- 《Effective C#》Item 15:利用using和try-finally来释放资源
- 日积月累:ProguardGui进行jar包代码混淆
- Silverlight Image Source URI 加反斜杠引和不加的区别
- 把核心代码全开源,还能做出卡别人脖子的产品吗?
- linux IPv4报文处理浅析
- CI框架主题切换的功能
- 手动构建redis集群
- python基础操作---string
- php mongodb获取指定字段,Mongodb 根据子文档的某个特定字段排序的问题
- Qlikview Session Recovery
- 如何登录华为云服务器
- C语言编程实现程输出所有玫瑰花数
- 模型转换、压缩、加速工具
- 【详细】国内网站备案流程与步骤
- TwinCAT 3 气缸程序
- 前端学习日记2-html表单元素
- 免费开源的建站程序大全,不会编程也可以自助搭建网站了哦
- C语言标准,ANSI C,ISO C,GNU C
热门文章
- python os.path.splitext()的用法_python os.path模块常用方法详解
- android 仿抖音 编辑视频,Android 仿抖音之使用OpenGL实现抖音视频录制
- 关于avast 17.1版本
- 杨森翔的书法作品【行书、爨体、隶书等作品】
- 基本算法-堆积树排序
- 计算机知识怎么记忆,计算机二级考试复习记忆的好方法
- CTF-misc(功夫再高也怕菜刀)
- 100 道 JavaScript 面试题及答案(下)
- python关系运算符有哪些_Python漫谈-关系(比较)运算符 - Silvia@Thu
- ubuntu 22.04lts安装netcdfc支持hdf5