陣列 最大差值 演算法打卡 最大間距

2021-10-16 02:23:58 字數 1992 閱讀 6334

難度:困難

題目:

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

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

思考:

這個題目夠短了吧?但是難度是困難

跟看到長題目不要慌同樣重要的事,看到難度是困難也不要慌!

這個看著也不是很難嘛,

就是找出每兩個數之間的距離,最大距離!

思路:

①因為陣列是亂序的,可以先對陣列進行排序

②然後順序遍歷,找出最大的距離

就這?嗯就這

**:

public int maximumgap2(int nums)
又思考:有沒看到上面這個,沒有再看看,

線性時間空間誒,也就是o(n)

上面**用的是arrays.srot,之前也說過這是幾個排序在一起,最好o(n),但是最好是o(n²)。

因此這種方法雖然行,但是有點不講武德,耗子尾汁。

所以換個方法,用桶排序,桶排序就不嘮嗑了

還是嘮嗑一下吧

一句話總結:劃分多個範圍相同的區間,每個子區間自排序,最後合併

public int maximumgap3(int nums)     // 最大最小相同直接返回    if(max - min == 0) return 0;    // 用於存放每個桶的最大最小值    int bucketmin = new int[n-1];    int bucketmax = new int[n-1];    arrays.fill(bucketmax, -1);    arrays.fill(bucketmin, integer.max_value);    // 確定桶的間距    int interval = (int) math.ceil((double)(max - min) / (n - 1));    for (int num : nums)     // maxgap 表示桶之間最大的差距    int maxgap = 0;    // premax 表示前乙個桶的最大值    int previousmax = min;    for(int i = 0; i < n - 1; i++)     maxgap = math.max(maxgap, max - previousmax);    return maxgap;}
複雜度分析

時間複雜度:o(n),其中 n 是陣列的長度。注意到桶的數量為(max-min)/d≈n-1,也就是o(n)

空間複雜度:o(n),其中 n 是陣列的長度。我們開闢的空間大小取決於桶的數量。

--------------------------------------完------------------------------

舊時就食shi啦

最緊要睇邊個夠實力

陣列 最大差值 leetcode 164 最大間距

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

LeetCode 最大間距

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

164 最大間距

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