leetcode 164 最大間距

2021-10-01 11:43:00 字數 1431 閱讀 4636

給定乙個無序的陣列,找出陣列在排序之後,相鄰元素之間最大的差值。

如果陣列元素個數小於 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,因此...