美文网首页
2018-08-22 LeetCode164. 最大间距(桶排序

2018-08-22 LeetCode164. 最大间距(桶排序

作者: 菜鸡学算法 | 来源:发表于2018-08-22 21:10 被阅读0次

给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。
如果数组元素个数小于 2,则返回 0。

class Solution {
    public int maximumGap(int[] nums) {
        if(nums.length < 2) return 0;
        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;
        int n = nums.length;
        for (int d: nums) {
            max = Math.max(max, d);
            min = Math.min(min, d);
        }
        int size = (max - min) / n + 1;//桶大小
        int bucket_nums = (max - min) / size + 1;//桶个数
        int []bucket_min = new int[bucket_nums];
        int []bucket_max = new int[bucket_nums];
        for(int i = 0; i < bucket_nums; i++){
            bucket_min[i] = Integer.MAX_VALUE;
            bucket_max[i] = Integer.MIN_VALUE;
        }
        HashSet<Integer> hs = new HashSet<Integer>();
        for (int d : nums) {
            int idx = (d - min) / size;//桶索引
            bucket_min[idx] = Math.min(bucket_min[idx], d);
            bucket_max[idx] = Math.max(bucket_max[idx], d);
            hs.add(idx);
        }
        int pre = 0;
        int res = 0;
        for (int i = 1; i < bucket_nums; ++i) {
            if (!hs.contains(i)) continue;//判断桶内是否有元素
            res = Math.max(res, bucket_min[i] - bucket_max[pre]);
            pre = i;
        }
        return res;
    }
}

相关文章

  • 2018-08-22 LeetCode164. 最大间距(桶排序

    给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。如果数组元素个数小于 2,则返回 0。

  • LeetCode164. 最大间距(排序)JS

  • Leetcode164.最大间距(困难--快排、桶、基数排序)

    题目描述: 给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。如果数组元素个数小于2,则返回0。 示...

  • 排序算法

    桶排序,冒泡排序,快速排序原理 桶排序(计数排序) 新建一个数组(最大值+1位) [0,最大值],初始都为0是几就...

  • 桶排序与力扣(LeetCode) -164 最大间距

    在我的博客冒泡排序、插入排序、快速排序、堆排序、归并排序总结中介绍了几种经典的排序方法,其中快速排序、堆排序和归并...

  • 记数基数排序

    记数基数排序的基础是桶排序,桶排序的一个要求就是要排序的数在一定范围以内,比如最大为K,桶排序的一般步骤有下面三步...

  • 哈希&计数排序和桶排序&基数排序

    length在大部分语言里是最大的数字下标+1 完整的计数排序 桶排序 桶排序是计数排序的升级版排序,要么浪费时间...

  • 2019-11-16

    桶:容器计数排序基数排序 题目:有N个数,就准备N+1个桶最小值放0号桶,最大值放N+1号桶

  • 算法基础 排序(一)

    桶排序冒泡排序快速排序 1.桶排序 所谓的桶排序就是列出所有的可能进行排序 小结:这里的桶排序只是简化版的.桶排序...

  • 2.8计数排序打卡

    2.7计数排序时间复杂度o(n) 不是基于比较的排序算法,来自于桶排序 思路:1.根据最大值,最小值创建若干个桶(...

网友评论

      本文标题:2018-08-22 LeetCode164. 最大间距(桶排序

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