陣列 最大差值 面試題 無序陣列排序後的最大相鄰差

2021-10-16 02:23:58 字數 1246 閱讀 2880

// 排序,然後計算最大差值

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 就不能用上述常規的排序演算法了。...