美文网首页
Maximum Gap

Maximum Gap

作者: 瞬铭 | 来源:发表于2020-07-02 11:57 被阅读0次

https://leetcode.com/problems/maximum-gap/
给定一个无序int数组,求出排序后相邻两个整数最大的差值

Example 1:
Input: [3,6,9,1]
Output: 3
Explanation: The sorted form of the array is [1,3,6,9], either
(3,6) or (6,9) has the maximum difference 3.
Example 2:
Input: [10]
Output: 0
Explanation: The array contains less than 2 elements, therefore return 0.

  • 解题思路
    桶排序 Bucket Sort 来做,首先找出数组的最大值和最小值,然后要确定每个桶的容量,即为 (最大值 - 最小值) / 个数 + 1,在确定桶的个数,即为 (最大值 - 最小值) / 桶的容量 + 1,然后需要在每个桶中找出局部最大值和最小值,而最大间距的两个数不会在同一个桶中,而是一个桶的最小值和另一个桶的最大值之间的间距

上代码

 public int maximumGap(int[] nums) {
        if (nums.length <= 1) {
            return 0;
        }

        int max = Integer.MIN_VALUE, min = Integer.MAX_VALUE, n = nums.length, pre = 0, res = 0;
        for (int num : nums) {
            max = Integer.max(max, num);
            min = Integer.min(min, num);
        }

        //bucket的大小
        int size = (max - min) / n + 1;

        //一共有多少个bucket
        int cnt = (max - min) / size + 1;

        int[] bucketMin = new int[cnt];
        int[] bucketMax = new int[cnt];

        Arrays.fill(bucketMin, Integer.MAX_VALUE);
        Arrays.fill(bucketMax, Integer.MIN_VALUE);

        //计算每个bucket内部的最大值和最小值
        for (int num : nums) {
            int idx = (num - min) / size;
            bucketMin[idx] = Math.min(bucketMin[idx], num);
            bucketMax[idx] = Math.max(bucketMax[idx], num);
        }

        for (int i = 1; i < cnt; i++) {
            if (bucketMin[i] == Integer.MAX_VALUE || bucketMax[i] == Integer.MIN_VALUE){
                continue;
            }

            res = Math.max(res,bucketMin[i] - bucketMax[pre]);
            pre = i;
        }

        return res;
    }

相关文章

  • Maximum Gap

    https://leetcode.com/problems/maximum-gap/给定一个无序int数组,求出排...

  • 2019-01-16

    LeetCode 164. Maximum Gap Description Given an unsorted a...

  • Leetcode - Maximum Gap

    My code: 看到这道题目,第一个想法是排序。然后要求排序时间复杂度是 O(n)就想到了 radix sort...

  • LintCode 最大间距

    http://www.lintcode.com/zh-cn/problem/maximum-gap/ 最大间距 查...

  • ARTS 第20周

    ARTS 第20周分享 [TOC] Algorithm 164. Maximum Gap [hard] [题目描述...

  • 164. Maximum Gap

    问题描述 Given an unsorted array, find the maximum difference...

  • Leetcode 164. Maximum Gap

    Given an unsorted array, find the maximum difference betw...

  • LeetCode 164. Maximum Gap

    Description Given an unsorted array, find the maximum dif...

  • Leetcode-164-Maximum Gap

    给定一个未排序的数组,求排序后数组中相邻元素之差的最大值。 这题最大的思维盲点就在于的复杂度让人直接放弃包含排序的...

  • Lintcode400 Maximum Gap solutio

    【题目描述】 Given an unsorted array, find the maximum differen...

网友评论

      本文标题:Maximum Gap

      本文链接:https://www.haomeiwen.com/subject/kqnlqktx.html