问题描述:最大间隙问题:给定n个实数,求这n个数在实轴上相邻2个数之间的最大差值。设计解最大间隙问题的线性时间算法。
算法分析:问题很简单,而且描述本身就暗示了一种自然的求解方法,即先对元素排序,然后逐个求相邻元素的间距。这种解法的复杂度为O(n*logn)。再想一下,设 min, max分别是数组中的最小和最大元素,len = (max-min)/n-1那么最大间距maxGap >= len。把a分成长度为len的区间,即[min, min+len), [min+len, min+2*len), ..., [max-len, max],最大间距一定是落在相邻的两个区间,或者不相邻但中间区间没有元素的两个区间,并且是在前一个区间的最大值和后一个区间的最小值之间产生。所以 只需找出每一个区间的最大值和最小值,然后扫描一遍就能求出最大间距。