成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

leetcode164. Maximum Gap

張利勇 / 2824人閱讀

摘要:這里最小的意思并不是說任意兩個數(shù)之間的最小間隔,而是指這一組數(shù)字的最大間隔必然不小于這個最小間隔。而每個桶內(nèi)的數(shù)字間隔必然不會超過最小間隔。

題目要求
Given an unsorted array, find the maximum difference between the successive elements in its sorted form.

Try to solve it in linear time/space.

Return 0 if the array contains less than 2 elements.

You may assume all elements in the array are non-negative integers and fit in the 32-bit signed integer range.

一個亂序的數(shù)組,找到其有序排列后相鄰兩個數(shù)之間最大的間隔。試著用線性時間和空間復(fù)雜度來解決這個問題。

思路和代碼

這里并不需要完全的進(jìn)行排序。我們只需要找到合適的區(qū)間劃分,并將各個數(shù)字丟到其所屬的區(qū)間中。之后,我們只需要比較前一個區(qū)間的最大值和后一個區(qū)間的最小值之間的差距即可以獲得該數(shù)組最大的間隔。

這里選擇區(qū)間劃分的方式是找到這一組數(shù)字的“最小”間隔。這里最小的意思并不是說任意兩個數(shù)之間的最小間隔,而是指這一組數(shù)字的最大間隔必然不小于這個最小間隔。
我們可以知道,假設(shè)有n個數(shù)字,那么這n個數(shù)字的最小間隔為Math.ceil((double)(max-min) / (count-1)),即將最大值和最小值的差距按照數(shù)組大小等分。

可以將其想象為爬樓梯,我們從最小的數(shù)字試圖爬到最大的數(shù)字,一共有n-1級臺階,而且每個臺階的高度為整數(shù)。那么一旦有一級臺階比最小間隔矮,就必然有一級比最小間隔高,從而才能爬到最大的數(shù)字。

因此,我們現(xiàn)在相當(dāng)于分出了n個桶,每個數(shù)字必然落入這n個桶中的一個。而每個桶內(nèi)的數(shù)字間隔必然不會超過最小間隔。所以正如上文所說,比較相鄰兩個桶的邊界就可以了。

    public int maximumGap(int[] nums) {
        int count = nums.length;
        if(count < 2) return 0;
        
        int min = Integer.MAX_VALUE;
        int max = Integer.MIN_VALUE;
        for(int num : nums){
            min = Math.min(min, num);
            max = Math.max(max, num);
        }
        
        int minGap = (int)Math.ceil((max - min) * 1.0 / (count - 1));
        if(minGap==0) return minGap;
        int[] minBucket = new int[count];
        int[] maxBucket = new int[count];
        for(int i = 0 ; i maxBucket[i]) continue;
            maxGap = Math.max(minBucket[i] - prev, maxGap);
            prev = maxBucket[i];
        }
        
        return maxGap;
    }


想要了解更多開發(fā)技術(shù),面試教程以及互聯(lián)網(wǎng)公司內(nèi)推,歡迎關(guān)注我的微信公眾號!將會不定期的發(fā)放福利哦~

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/68528.html

相關(guān)文章

  • 164. Maximum Gap

    摘要:這個的長度是最小可能的最大差值。注意考慮和兩個邊界值也要加進(jìn)去。 題目:Given an unsorted array, find the maximum difference between the successive elements in its sorted form. Try to solve it in linear time/space. Return 0 if the...

    EddieChan 評論0 收藏0
  • Leetcode PHP題解--D47 868. Binary Gap

    摘要:題目鏈接題目分析給定一個數(shù)字,計算其二進(jìn)制表示中,出現(xiàn)的兩個最大距離。因為只有一個是沒辦法比較距離的。當(dāng)出現(xiàn)時,判斷當(dāng)前距離是否大于記錄的最大值。最后判斷當(dāng)只有一個時,直接返回。否則返回所記錄的最大距離。 D47 868. Binary Gap 題目鏈接 868. Binary Gap 題目分析 給定一個數(shù)字,計算其二進(jìn)制表示中,出現(xiàn)的兩個1最大距離。 思路 當(dāng)然是先轉(zhuǎn)換成二進(jìn)制了。再...

    Flink_China 評論0 收藏0
  • [LeetCode] Third Maximum Number

    Problem Given a non-empty array of integers, return the third maximum number in this array. If it does not exist, return the maximum number. The time complexity must be in O(n). Example Example 1: Inp...

    red_bricks 評論0 收藏0
  • [LeetCode] Maximum Binary Tree

    Problem Given an integer array with no duplicates. A maximum tree building on this array is defined as follow: The root is the maximum number in the array.The left subtree is the maximum tree construc...

    xiaoqibTn 評論0 收藏0
  • LeetCode 104 Maximum Depth of Binary Tree 二叉樹最大深度

    LeetCode 104 Maximum Depth of Binary Tree難度:Easy 題目描述:找到一顆二叉樹的最深深度。Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node down ...

    PiscesYE 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<