LeetCode 164 最大間距(C )

2021-10-10 21:54:48 字數 725 閱讀 8643

題目描述:

給定乙個無序的陣列,找出陣列在排序之後,相鄰元素之間最大的差值。如果陣列元素個數小於 2,則返回 。

輸入: [3,6,9,1]

輸出: 3

解釋: 排序後的陣列是 [1,3,6,9], 其中相鄰元素 (3,6) 和 (6,9) 之間都存在最大差值 3。 

題解:

解題關鍵在於:最大和最小數之間的最大間距 一定不小於(max-min)/n-1。

計算桶的大小:(最大值-最小值)/ 區間個數, 其中(最大-最小)即為總區間長度

計算桶數量:(最大值-最小值)/ 桶大小+1,(+1 的原因是,左閉右開區間)

計算 元素對應的桶序號: (當前元素的值-最小值)/ 桶大小

維護桶內的最大值,最小值

因為發現了,最大和最小數之間的最大間距 一定不小於(max-min)/(n-1),所以,最大間距一定出現在不同的桶之間。 所以,最後比較 當前桶的最小值與前乙個桶的最大值之間的差,不斷更新 最大間距。

**:

class solution );

for(auto& num: nums)

else

}int pre=-1, ans=0;

for(int i=0;ipre=i;

}return ans;

}};

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 ...