leetcode 164最大間隔

2021-10-01 06:08:10 字數 1000 閱讀 4765

桶排序的思想,一共有n個數,如果放進大於等於n個桶裡面,最大間隔將從桶的間隔中取。如果要放進大於等於n個桶裡,那麼桶的增量應該怎麼取。

首先要把n個數字去除重複的數字,然後將最大值減去最小值也就是累計的增量,由於最少要設定n個桶,那麼一共增加n-1次,可以讓增量為(最大值-最小值)/(n-1)取整,桶的個數即為(最大值-最小值)/增量 加一後向上取整。

class

solution

:def

maximumgap

(self, nums: list[

int])-

>

int:

nums=

list

(set

(nums)

) n=

len(nums)

if n<2:

return

0 max_num,min_num=

max(nums)

,min

(nums)

if max_num==min_num:

return

0

b=(max_num-min_num)

//(n-1)

k=math.ceil(

(max_num-min_num)

//b+1)

h=[[

]for i in

range

(k)]

for num in nums:

h[(num-min_num)

//b]

res=

0for i in

range

(k):

iflen

(h[i])!=

0:mi=

min(h[i]

)if i>0:

res=

max(res,mi-ma)

ma=max(h[i]

)return res

LeetCode 164 最大間距

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

leetcode 164 最大間距

給定乙個無序的陣列,找出陣列在排序之後,相鄰元素之間最大的差值。如果陣列元素個數小於 2,則返回 0。第一時間想到的也是最簡單的,先將所給陣列排序,再遍歷一遍陣列找出最大間距 複雜度分析 首先我們來了解一下桶排序的思想。桶排序是體現了分治的思想。原理是建立若干個桶,通過某種對映將待排序的元素放置到桶...

leetcode 164 最大間距

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