164. Maximum Gap (Hard) - TengnanYao/daily_leetcode GitHub Wiki
class Solution(object):
def maximumGap(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums) < 2:
return 0
m, n = max(nums), min(nums)
size = (m - n) // (len(nums) - 1) + 1
buckets = [[] for _ in range(len(nums))]
for num in nums:
bucket = buckets[(num - n) // size]
bucket.append(num)
if len(bucket) > 1:
bucket[ : ] = [min(bucket), max(bucket)]
buckets = sum(buckets, [])
result = 0
for i in range(len(buckets) - 1):
result = max(result, buckets[i + 1] - buckets[i])
return result