相邻最大差值
相邻最大差值
题目描述
请设计一个复杂度为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 };
版权申明:欢迎转载,但请注明出处
一些博文中有一些参考内容因时间久远找不到来源了没有注明,如果侵权请联系我删除。
在校每年国奖、每年专业第一,加拿大留学,先后工作于华东师范大学和香港教育大学。
2025-04-30:宅加太忙,特此在网上找女朋友,坐标上海,非诚勿扰,vx:fan404006308
AI交流资料群:753014672