164
题目描述:
给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。
如果数组元素个数小于 2,则返回 0。
示例:
解答:
class Solution:
def maximumGap(self, nums: List[int]) -> int:
'''
设置n+1个桶是为了保证间距最大的两个数被分到不同的桶中
因为最大间距 x >= (max_val - min_val) / (n-1)
而使用n+1个桶每个桶中数的差值最大为 (max_val - min_val) / n
因此一个桶不可能同时存放间距最大的两个数
'''
if len(nums) < 2:
return 0
min_val, max_val, n = float('inf'), float('-inf'), len(nums)
for i in range(n):
if nums[i] < min_val:
min_val = nums[i]
if nums[i] > max_val:
max_val = nums[i]
if min_val == max_val:
return 0
mins = [0] * (n + 1)
maxs = [0] * (n + 1