給定乙個無序的陣列,找出陣列在排序之後,相鄰元素之間最大的差值。
如果陣列元素個數小於 2,則返回 0。
示例 1:
輸入:[3
,6,9
,1]輸出:
3解釋: 排序後的陣列是 [1,
3,6,
9], 其中相鄰元素 (3,
6) 和 (6,
9) 之間都存在最大差值 3。
示例 2:
輸入:[10
]輸出:
0解釋: 陣列元素個數小於 2,因此返回 0。
說明:
由反證法可以證明相鄰元素的間距不大於cei
l((m
axva
l−mi
nval
)/(n
−1))
ceil((maxval - minval) / (n-1))
ceil((
maxv
al−m
inva
l)/(
n−1)
)所以可以將整個區間minval ~ maxval
劃分為若干個大小為d=f
loor
((ma
xval
−min
val)
/(n−
1)
)d = floor((maxval - minval) / (n-1))
d=floo
r((m
axva
l−mi
nval
)/(n
−1))
的區間,這樣相鄰的元素一定不會落在同乙個區間(桶)中,所以桶的數量為(ma
xval
−min
val)
/d+1
(maxval - minval)/d + 1
(maxva
l−mi
nval
)/d+
1。找到每個元素所在的桶後只需要維護每個桶中元素的最大值與最小值,然後從前到後不斷比較相鄰的桶,用當前桶的最小值減去前乙個桶的最大值來計算間距。
class
solution
for(
int i =
0; i < n; i++
)else
}int ret =0;
int prev =0;
for(
int i =
1; i < bucketsize; i++
) ret = math.
max(ret, bucket[i][0
]- bucket[prev][1
]); prev = i;
}return ret;
}}
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 ...