// 排序,然後計算最大差值
function maxsortednear(arr)
}return max;
}let a = [12, 3, 34, 23, 12, 2, 123]
console.log(a.join(','));
console.log('maxsortednear:', maxsortednear(a));
// 優化版,使用桶排序統計最大最小值
function maxsortednear2(arr)
if (arr[i] < min)
}// 初始化桶
let bucketnum = math.floor((max - min) / arr.length) + 1; // 桶的數量
let buckets = new array(bucketnum)
for (let i = 0; i < bucketnum; i++) ;
}// 遍歷陣列,確定最大最小值
for (let i = 0; i < arr.length; i++)
if (data.max === undefined || data.max < arr[i])
}// 遍歷桶,找到最大差值
let leftmax = buckets[0].max;
let maxdistance = 0;
for (let i = 1; i < buckets.length; i++)
if (buckets[i].min - leftmax > maxdistance)
leftmax = buckets[i].max;
}return maxdistance;
}let b = [12, 3, 3, 32, 5, 5, 2, 222, 12, 42]
console.log(b.join(','));
console.log('maxsortednear2:', maxsortednear2(b));
console.log('maxsortednear:', maxsortednear(b));
console.log('maxsortednear2:', maxsortednear2(a));
無序陣列求最大差值
乙個陣列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...
求無序陣列排序後相鄰兩個數的最大差值
缺點 當陣列中元素懸殊很大時,如1 2 100000000,則需要構造乙個長度是100000000的新陣列array,則該方法不可取。假設原陣列長度為n 最大差值肯定出現在空桶附近。非空桶內部最大差值d 空間複雜度 o n 時間複雜度 o n 總共掃瞄3次 int maxgap std vector...
排序陣列中的相鄰兩數最大差值
給定乙個陣列a及其大小n,求其排序後的相鄰兩數的最大差值。注 要求時間複雜度為o n 思路 題目要求對排序後的陣列進行操作,顯然需要先對陣列進行排序。如果沒有要求時間複雜度,那麼可以有很多種排序演算法,如快速排序 堆排序 歸併排序等等。但是這裡要求時間複雜度為o n 就不能用上述常規的排序演算法了。...