题目

已知三个升序整数数组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;}

如果有好的思路,可以留言。。。。。

[经典面试题][阿里]三元组最小距离相关推荐

  1. java面试题_阿里大厂流出的数百道 Java 经典面试题

    BAT 常问的 Java基础39道常见面试题 1.八种基本数据类型的大小,以及他们的封装类 2.引用数据类型 3.Switch能否用string做参数 4.equals与==的区别 5.自动装箱,常量 ...

  2. 必读!53个Python经典面试题详解

    作者 | Chris 翻译 | 苏本如,编辑 | 夕颜 题图 | 视觉中国 出品 | AI科技大本营(ID:rgznai100) 本文列出53个Python面试问题,并且提供了答案,供数科学家和软件工 ...

  3. Java经典面试题整理及答案详解(五)

    Java经典面试题第五弹来啦!本节面试题主要是针对Java初级基础提问,看看你还记得多少? 1.String str="hello",这个字符串对象在栈内存中明明有一个引用(str ...

  4. 网易校园招聘历年经典面试题汇总:前端 岗

    这个系列计划收集几百份朋友和读者的面经,作者合集方便查看,各位有面经屯着可以联系我哦 这个系列离结束差的还特别多,会更新涵盖所有一线大厂的所有岗位,也可以关注一下. 腾讯校园招聘历年经典面试题汇总:前 ...

  5. 网易校园招聘历年经典面试题汇总:C++研发岗

    这个系列计划收集几百份朋友和读者的面经,作者合集方便查看,各位有面经屯着可以联系我哦 这个系列离结束差的还特别多,会更新涵盖所有一线大厂的所有岗位,也可以关注一下. 腾讯校园招聘历年经典面试题汇总:前 ...

  6. 百度校招历年经典面试题汇总:Java开发岗

    这个系列计划收集几百份朋友和读者的面经,作者合集方便查看,各位有面经屯着可以联系我哦 这个系列离结束差的还特别多,会更新涵盖所有一线大厂的所有岗位,也可以关注一下. 百度校园招聘历年经典面试题汇总:C ...

  7. BAT Java面试笔试33题:JavaList、Java Map等经典面试题!答案汇总!

    JavaList面试题汇总 1.List集合:ArrayList.LinkedList.Vector等. 2.Vector是List接口下线程安全的集合. 3.List是有序的. 4.ArrayLis ...

  8. java 1.8有没有jshell_收藏了800道Java后端经典面试题,分享给大家,希望你找到自己理想的Offer呀~...

    前言 在茫茫的互联网海洋中寻寻觅觅,我收藏了800+道Java经典面试题,分享给你们.建议大家收藏起来,在茶余饭后拿出来读一读,以备未雨绸缪之需.另外,面试题答案的话,我打算后面慢慢完善在github ...

  9. 不知道不 OK!53 个 Python 经典面试题详解

    作者 | Chris 翻译 | 苏本如,责编 | 夕颜 头图 | CSDN付费下载自视觉中国 出品 | CSDN(ID:CSDNnews) 以下为译文: 本文列出53个Python面试问题,并且提供了 ...

最新文章

  1. mysql新建表96k_innodb表 手工导入导出
  2. 宋君强 学科评估 计算机科学,三分钟,这个学院带你乘风破浪
  3. 《Effective C#》Item 15:利用using和try-finally来释放资源
  4. 日积月累:ProguardGui进行jar包代码混淆
  5. Silverlight Image Source URI 加反斜杠引和不加的区别
  6. 把核心代码全开源,还能做出卡别人脖子的产品吗?
  7. linux IPv4报文处理浅析
  8. CI框架主题切换的功能
  9. 手动构建redis集群
  10. python基础操作---string
  11. php mongodb获取指定字段,Mongodb 根据子文档的某个特定字段排序的问题
  12. Qlikview Session Recovery
  13. 如何登录华为云服务器
  14. C语言编程实现程输出所有玫瑰花数
  15. 模型转换、压缩、加速工具
  16. 【详细】国内网站备案流程与步骤
  17. TwinCAT 3 气缸程序
  18. 前端学习日记2-html表单元素
  19. 免费开源的建站程序大全,不会编程也可以自助搭建网站了哦
  20. C语言标准,ANSI C,ISO C,GNU C

热门文章

  1. python os.path.splitext()的用法_python os.path模块常用方法详解
  2. android 仿抖音 编辑视频,Android 仿抖音之使用OpenGL实现抖音视频录制
  3. 关于avast 17.1版本
  4. 杨森翔的书法作品【行书、爨体、隶书等作品】
  5. 基本算法-堆积树排序
  6. 计算机知识怎么记忆,计算机二级考试复习记忆的好方法
  7. CTF-misc(功夫再高也怕菜刀)
  8. 100 道 JavaScript 面试题及答案(下)
  9. python关系运算符有哪些_Python漫谈-关系(比较)运算符 - Silvia@Thu
  10. ubuntu 22.04lts安装netcdfc支持hdf5