給定乙個無序的陣列,找出陣列在排序之後,相鄰元素之間最大的差值。
如果陣列元素個數小於 2,則返回 0。
第一時間想到的也是最簡單的,先將所給陣列排序,再遍歷一遍陣列找出最大間距
複雜度分析
首先我們來了解一下桶排序的思想。桶排序是體現了分治的思想。原理是建立若干個桶,通過某種對映將待排序的元素放置到桶中,使每個桶中的最大值都小於他後面乙個桶的最小值,並且每個桶容納的元素數量盡可能平均。然後對每個桶中的元素排序。最後將所有桶中的元素依次輸出。
class
solution
int n = nums.length;
int min = nums[0]
;int max = nums[0]
;for
(int i =
1; i < n; i++)if
(max - min ==0)
int interval =
(int
) math.
ceil((
double
)(max - min)
/(n -1)
);int[
] bucketmin =
newint
[n -1]
;int
bucketmax =
newint
[n -1]
;
arrays.
fill
(bucketmin, integer.max_value)
; arrays.
fill
(bucketmax,-1
);for(
int i =
0; i < nums.length; i++
) bucketmin[index]
= math.
min(nums[i]
, bucketmin[index]);
bucketmax[index]
= math.
max(nums[i]
, bucketmax[index]);
}int maxgap =0;
int previousmax = min;
for(
int i =
0; i < n -
1; i++
)
maxgap = math.
max(bucketmin[i]
- previousmax, maxgap)
; previousmax = bucketmax[i];}
maxgap = math.
max(max - previousmax, maxgap)
;return maxgap;
}}
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。示例 1 輸入 3,6,9,1 輸出 3 解釋 排序後的陣列是 1,3,6,9 其中相鄰元素 3,6 和 6,9 之間都存在最大差值 3。示例 2 輸入 10 ...
leetCode 164 最大間距
給定乙個無序的陣列,找出陣列在排序之後,相鄰元素之間最大的差值。如果陣列元素個數小於 2,則返回 0。示例 1 輸入 3 6,9 1 輸出 3解釋 排序後的陣列是 1,3,6,9 其中相鄰元素 3,6 和 6,9 之間都存在最大差值 3。示例 2 輸入 10 輸出 0解釋 陣列元素個數小於 2,因此...