相邻最大差值
题目描述
请设计一个复杂度为O(n)的算法,计算一个未排序数组中排序后相邻元素的最大差值。
给定一个整数数组A和数组的大小n,请返回最大差值。保证数组元素个数大于等于2小于等于500。
测试样例:
[9,3,1,10],4
返回:6
桶排序+离散化
1 class MaxDivision { 2 public: 3 int findMaxDivision(vector<int> A, int n) { 4 // write code here 5 //有点桶排序加离散化的思想 6 int minv=A[0],maxv=A[0]; 7 for(int i=0;i<n;i++){ 8 if(A[i]>maxv) maxv=A[i]; 9 if(A[i]<minv) minv=A[i]; 10 } 11 if(minv==maxv) return 0; 12 int size=maxv-minv+1; 13 int a[size]; 14 for(int i=0;i<size;i++){ 15 a[i]=0; 16 } 17 for(int i=0;i<n;i++){ 18 a[A[i]-minv]=1; 19 } 20 int sum=0; 21 int ans=0; 22 for(int i=0;i<size;i++){ 23 if(a[i]==0) sum++; 24 if(a[i]==1) sum=0; 25 if(sum>ans) ans=sum; 26 } 27 return ans+1; 28 } 29 };