题目描述
给定一个数组,求如果排序之后,相邻两数的最大差值,要求时 间复杂度O(N),且要求不能用非基于比较的排序
注意不基于比较哦
思路
思路:桶排序
- 假设数组长度为n,准备n+1个桶
- 遍历该数组,将最小值放入到第1个位置,将最大值放入到最后一个位置
- 将剩下的数等分成等分成n-1份依次放入剩下对应范围的桶中,
- 最后这n+1个桶中至少有一个空桶,说明桶内的数值差不是最大差值,我们去桶间找最大差值
- 对于每个桶,我们都保存了每个桶的最小值和最大值,从第2个桶开始,每次计算当前桶的最小值与前一个桶(要有元素)的最大值的差,过程中我们动态更新最大差值