题目描述
请设计一个复杂度为O(n)的算法,计算一个未排序数组中排序后相邻元素的最大差值。
给定一个整数数组A和数组的大小n,请返回最大差值。保证数组元素个数大于等于2小于等于500。
测试样例:
[9,3,1,10],4
返回:6
import java.util.*;
public class MaxDivision {
public int findMaxDivision(int[] A, int n) {
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
for(int i = 0; i < n; i++) {
max = Math.max(max, A[i]);
min = Math.min(min, A[i]);
}
int[] help = new int[max - min + 1];
for(int i = 0; i < n; i++) {
help[A[i] - min]++;
}
int maximum = 1;
int nullarr = 1;
for(int i = 0; i < max - min + 1; i++) {
if(help[i] == 0) {
nullarr++;
} else {
maximum = Math.max(maximum, nullarr);
nullarr = 0;
}
}
return maximum + 1;
}
}