題目描述:
給定乙個無序的陣列,找出陣列在排序之後,相鄰元素之間最大的差值。如果陣列元素個數小於 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 ...