164 最大間距

2021-10-03 09:42:47 字數 1032 閱讀 2818

題目.

high

對於整數型的排序問題,首先應該聯想到桶排序,這是唯一on的排序演算法。另外假設我們把n個數放在n+1個桶裡面,必定有空桶產生,那麼最大間距肯定在間隔了空桶的兩個桶之間產生

package main

import

"fmt"

type bucket struct

func

maximumgap

(nums [

]int

)int

min, max := nums[0]

, nums[0]

for_

, v :=

range nums

else

if v > max

}if max-min <=

1 step :=

(max - min)/(

len(nums)+1

)if step <

2 buckets :=

make([

]*bucket,

(max-min)

/step+1)

for_

, v :=

range nums

}else

else

if v < buckets[i]

.min }}

prev, gap := buckets[0]

,1for i :=

1; i <

len(buckets)

; i++

prev = buckets[i]}}

return gap

}func

main()

))}

o(n)

o(n)最壞情況

執行用時 :

8 ms

, 在所有 go 提交中擊敗了

43.37%

的使用者記憶體消耗 :

3.5 mb

, 在所有 go 提交中擊敗了

43.33%

的使用者

164 最大間距

給定乙個無序的陣列,找出陣列在排序之後,相鄰元素之間最大的差值。如果陣列元素個數小於 2,則返回 0。示例 1 輸入 3,6,9,1 輸出 3 解釋 排序後的陣列是 1,3,6,9 其中相鄰元素 3,6 和 6,9 之間都存在最大差值 3。思路 注釋 public static int maximu...

164 最大間距

開始想的是計數排序,但超時,如 2,999999999 這樣的樣例,記錄陣列太長,有用的佔比太少。後看官方思路,用n 1 n為原陣列元素個數 個桶去篩元素,每個桶能放的元素大小範圍固定,即下面 中的step,處理完後再掃瞄一遍當前桶最大和後繼桶最小值的差,取最大差值為結果。至於為什麼要n 1個桶,我...

164 最大間距

題目描述 給定乙個無序的陣列,找出陣列在排序之後,相鄰元素之間最大的差值。如果陣列元素個數小於 2,則返回 0。示例 1 輸入 3,6,9,1 輸出 3 解釋 排序後的陣列是 1,3,6,9 其中相鄰元素 3,6 和 6,9 之間都存在最大差值 3。示例 2 輸入 10 輸出 0 解釋 陣列元素個數...