LeeCode164 最大間距

2021-10-10 21:11:17 字數 1211 閱讀 9059

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

如果陣列元素個數小於 2,則返回 0。

示例 1:

輸入: [3,6,9,1] 輸出: 3 解釋: 排序後的陣列是 [1,3,6,9], 其中相鄰元素 (3,6) 和 (6,9)

之間都存在最大差值 3。

示例 2:

輸入: [10] 輸出: 0 解釋: 陣列元素個數小於 2,因此返回 0。

說明:

你可以假設陣列中所有元素都是非負整數,且數值在 32 位有符號整數範圍內。
自己沒有思路,本來想用現在會的排序排出來再遍歷找最小的,但俺現在會的排序時間複雜度不太行。

//用序列22,14,13,32帶入迴圈正確

//num:22 14 13 32

//cnt 0 0 2 1 1 0 0...

//cnt 0 0 2 3 4 4 4 4 ...

//buf 22 32 13 14

class

solution

int exp =1;

vector<

int>

buf(n)

;//大小共為n的桶們

int maxval =

*max_element

(nums.

begin()

, nums.

end())

;//lsd最低位優先的基數排序

while

(maxval >= exp)

for(

int i =

1; i <

10; i++

)//直接背吧,感覺這幾行好難理解

for(

int i = n -

1; i >=

0; i--

)copy

(buf.

begin()

, buf.

end(

), nums.

begin()

);//更新這次排出來的序列到nums

exp *=10

;//往上看高一位數

}int ret =0;

for(

int i =

1; i < n; i++

)return ret;}}

;

164 最大間距

給定乙個無序的陣列,找出陣列在排序之後,相鄰元素之間最大的差值。如果陣列元素個數小於 2,則返回 0。示例 1 輸入 3,6,9,1 輸出 3 解釋 排序後的陣列是 1,3,6,9 其中相鄰元素 3,6 和 6,9 之間都存在最大差值 3。思路 注釋 public static int maximu...

164 最大間距

開始想的是計數排序,但超時,如 2,999999999 這樣的樣例,記錄陣列太長,有用的佔比太少。後看官方思路,用n 1 n為原陣列元素個數 個桶去篩元素,每個桶能放的元素大小範圍固定,即下面 中的step,處理完後再掃瞄一遍當前桶最大和後繼桶最小值的差,取最大差值為結果。至於為什麼要n 1個桶,我...

164 最大間距

題目.high 對於整數型的排序問題,首先應該聯想到桶排序,這是唯一on的排序演算法。另外假設我們把n個數放在n 1個桶裡面,必定有空桶產生,那麼最大間距肯定在間隔了空桶的兩個桶之間產生 package main import fmt type bucket struct func maximumg...