題目.
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 解釋 陣列元素個數...