164 最大間距

2021-09-11 07:58:32 字數 856 閱讀 2638

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

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

示例 1:

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

輸出: 3

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

思路+**+注釋:

public static int maximumgap(int nums) 

int max=0;

int min=integer.max_value;

int n=nums.length;

for (int i:nums

) if (iminbucket=new arraylist<>(bucketnum);

for (int i = 0; i < bucketnum; i++)

listmaxbucket=new arraylist<>(bucketnum);

for (int i = 0; i < bucketnum; i++)

for (int num:nums) }

int res=0;

for (int i = 1; i < bucketnum; i++)

int j=i-1;

while (j>=0 && maxbucket.get(j)==-1)

int cha=minbucket.get(i)-maxbucket.get(j);

if (cha>res)

}return res;

}

164 最大間距

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

164 最大間距

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

164 最大間距

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