题目

已知三个升序整数数组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. 神经网络其实和人一样懒惰,喜欢走捷径......
  2. 各种卡的一些信息积累
  3. Hadoop配置学习
  4. 数据结构与算法--贪婪算法2
  5. PHP环境搭配(二):lamp(linux+apache+mysql+php)搭建,附moodle与onlinejudge配置
  6. java通过证书获取CN_java – 从证书DN解析CN [重复]
  7. a span做成按钮样式不选中文字
  8. 结合源码探讨Android距离传感器亮灭屏机制
  9. 标准ASCII编码表
  10. oracle wmsys.wm_concat ORA-00932: 数据类型不一致: 应为 -, 但却获得 CLOB
  11. 小米全国高校编程大赛 高弗雷勋爵
  12. Stadia云游戏平台
  13. 图片文字识别的方法有哪些?
  14. 为何学习Python?这是我看到的最好回答
  15. 苹果手表支持心电图功能,可能还是逃不过噱头的命运
  16. Vue--移动端开发
  17. 【imessage苹果推】苹果邮箱推邮箱Apple Push IMESSage SMS
  18. DorisDB 流批一体 实时架构
  19. c语言求三个数最值非函数,C语言编程:从键盘任意输入三个数,编写求其最大值、最小值的函数,用指针作函数参数实现。...
  20. 数值数据在计算机中的表示方法

热门文章

  1. iOS tintColor与backgroundColor的区别
  2. 阿里云中间件开源往事
  3. PLSQL 连接远程数据库,ORA-12638: 身份证明检索失败的解决方法
  4. java信息清洗程序_网页内容清洗
  5. Exception和Error有什么区别
  6. 节能减排绿色电力,可视化打造智慧虚拟电厂(二)
  7. Android入门学习_Android获取来电号码
  8. 中国10个“最”汉字的字
  9. 四.kafka0.7 消费者
  10. el-icon-${item.icon}不显示图标