有一个整形数组A,请设计一个复杂度为O(n)的算法,算出排序后相邻两数的最大差值。
给定一个int数组A和A的大小n,请返回最大的差值。保证数组元素多于1个。
测试样例:
[1,2,5,4,6],5
返回:2
代码如下:
import java.util.*;
public class Gap {
public int maxGap(int[] A, int n) {
for(int i=0;i<n-1;i++){
for(int j=0;j<n-i-1;j++){
if(A[j]>A[j+1]){
int t=A[j];
A[j]=A[j+1];
A[j+1]=t;
}
}
}
int[] B=new int[n-1];
for(int i=0;i<n-1;i++){
B[i]=Math.abs(A[i+1]-A[i]);
}
for(int i=0;i<B.length-1;i++){
for(int j=0;j<n-i-1;j++){
if(B[i]>B[i+1]){
int t=B[i];
B[i]=B[i+1];
B[i+1]=t;
}
}
}
return B[n-2];
}
}