大数据面试题求解:给定n个实数 ,求着n个实数在实轴上向量2个数之间的最大差值,要求线性的时间算法(最大间隙问题)
2018-04-02 08:13
459 查看
最先想到的方法就是先对这n个数据进行排序,然后一遍扫描即可确定相邻的最大间隙。但该方法不能满足线性时间的要求。故采取如下方法:找到n个数据中最大和最小数据max和min。用n-2个点等分区间[min, max],即将[min, max]等分为n-1个区间(前闭后开区间),将这些区间看作桶,编号为 i,且桶i的上界和桶i+1的下届相同,即每个桶的大小相同 。实际上,这些桶的边界构成了一个等差数列(首项为min ),且认为将min放入第一个桶,将max放入第n-1个桶。将n个数放入n-1个桶中:将每个元素分配到某个桶(编号为index),其中 ,并求出分到每个桶的最大最小数据。最大间隙:除最大最小数据max和min以外的n-2个数据放入n-1个桶中,由抽屉原理可知至少有一个桶是空的,又因为每个桶的大小相同,所以最大间隙不会在同一桶中出现,一定是某个桶的上界和某个桶的下界之间隙,也就是说,最大间隙在桶i的上界和桶j的下界之间产生 。一遍扫描即可完成。
参考:https://blog.csdn.net/acema/article/details/38682943
参考:https://blog.csdn.net/acema/article/details/38682943
相关文章推荐
- 最大间隙问题。给定 n 个实数,求这n个实数在数轴上相邻2个数之间的最大差值,设计解最大间隙问题的线性时间算法。
- 最大间隙问题。给定 n 个实数,求这n个实数在数轴上相邻2个数之间的最大差值,设计解最大间隙问题的线性时间算法。
- 最大间隙问题(线性时间算法)
- 最大间隙问题 线性时间算法
- 阿里巴巴面试算法题目:有无序的实数列V[N],要求求里面大小相邻的实数的差的最大值,关键是要求线性空间和线性时间
- 经典算法(3)——最大间隙问题(线性时间算法)
- 最大间隙问题(线性时间算法)
- 阿里巴巴面试算法题目:有无序的实数列V[N],要求求里面大小相邻的实数的差的最大值,关键是要求线性空间和线性时间
- 阿里巴巴面试算法题目:有无序的实数列V[N],要求求里面大小相邻的实数的差的最大值,关键是要求线性空间和线性时间
- 线性时间算法解决最大间隙问题
- 求解最大子序列和问题的线性时间算法
- 数据结构据与算法分析中的最大字数列求解问题
- 最大间隙问题(线性时间)
- 最大子数组问题---线性时间算法(转)
- 算法导论 4.1-5 最大子数组问题 线性时间算法 C++简单实现
- 算法实践——Twitter算法面试题(积水问题)的线性时间解法
- <笔记><算法导论> 假设求解问题的算法需要f(n)毫秒,对下表中的每个函数f(n)和时间t,确定可以在时间t内求解的问题的最大规模n。
- 有无序的实数列V[N],要求求里面大小相邻的实数的差的最大值,关键是要求线性空间和线性时间。
- 有无序的实数列 V[N],要求求里面大小相邻的实数的差的最大值,关键是要求线性空 间和线性时间
- 线性时间实现最大间隙问题