一个无序数组,如何求出该数组排序后的任意相邻元素的最大差值,要求时间和空间复杂度尽可能低。
- 常规操作: 利用快排或堆排堆数组进行排序,时间复杂度为O(NlogN), 比较排序后的数组,两个相邻元素的最大差值。
- 优化的方法:利用计数排序(当最大值和最小值相差较大时,有大的局限性), 最大差值为新数组中连续出现0值的次数再加上1。
- 简单方式: 利用桶排序,该方法不需要像标准桶排序一样给每一个桶内部进行排序,只需要记录桶内的最大值和最小值即可,时间复杂度稳定在O(N)。
package kyrie.com;
/**
* @program: Aglorithm
* @Author: Kyrie
* @Description:
*/
public class Code06_Each_Max_Difference {
public static int getMaxDiff(int[] arr){
//找数组的最大值和最小值
int array_min = Integer.MAX_VALUE;
int array_max = Integer.MIN_VALUE;
for (int i = 0; i < arr.length; i++) {
if(arr[i] > array_max){
array_max = arr[i]