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