乙個陣列a[0...n-1],求a[j]-a[i]的最大值,其中icite:
第一種方法:
從左往右求下標0到 k - 1 的最小值min 從右往左求 下標k到n -1 的最大值max,對於每個k都有乙個max - min的值,最後求這個值的最大值即可。
例如陣列:4 5 2 6 3 1
k:1 2 3 4 5
min: 4 4 2 2 2
max:6 6 6 3 1
max - min,最大的值為6 - 2 = 4, 即為結果
第二種方法:
令b[j] = a[j + 1] - a[j],
那麼a[j] - a[i]=(a[i+1]-a[i])+(a[i+2]-a[i+1])+...+(a[j]-a[i-1])
= b[i] +b[i+1]+ ...+ b[j - 1],
即將問題轉化成求乙個陣列子串行的最大值。這個過程的演算法是有o(n)的演算法的。
求無序陣列排序後相鄰兩個數的最大差值
缺點 當陣列中元素懸殊很大時,如1 2 100000000,則需要構造乙個長度是100000000的新陣列array,則該方法不可取。假設原陣列長度為n 最大差值肯定出現在空桶附近。非空桶內部最大差值d 空間複雜度 o n 時間複雜度 o n 總共掃瞄3次 int maxgap std vector...
陣列 最大差值 面試題 無序陣列排序後的最大相鄰差
排序,然後計算最大差值 function maxsortednear arr return max let a 12,3,34,23,12,2,123 console.log a.join console.log maxsortednear maxsortednear a 優化版,使用桶排序統計最大...
桶 求無序陣列排序後,最大的相鄰差值
引言 無限長的無序陣列 正負零都有可能。求出排序後最大的相鄰的差值 時間複雜度o n 且要求不能用非基於比較的排序 思路1.找出陣列中的最大元素,分配最大元素 1個桶,對桶等分如一號桶 0 9 二號桶 10 19 2.因為元素最大是n,所以準備了n 1個桶,所以肯定最小桶和最大桶肯定有數,中間有空桶...