zoukankan      html  css  js  c++  java
  • leetcode maximum gap

    这道题目是,给你一组乱序非负整数,求排好序后,这组数的连续两个数的最大差值。

    例如,3,9,10,2,8,4,1。则最大差值是4。

    一开始就考虑到可能要使用桶排序,但是最开始的思路是按照数的最高位的值大小来排序,这个思路并不行。

    后来上网查了下答案。一开始没看懂。

    大概思路是:

    另max,min分别为数组中的最大值和最小值,length为数组的元素个数

    那么设置每个桶的大小为:size=ceiling[(max-min)/(length-1)](ceiling为向上取整函数)

    则共有,(max-min)/size+1个桶。然后将每个元素放入它所属于的桶中。

    对于n,所属的桶为(n-min)/size   

    那么求出两个相邻桶的min和max差值的最大值。即为max gap。

    我的疑惑在于,如果max gap存在于桶内怎么办?

    这是不可能的,原因在于,maxGap一定是大于桶的size 的。maxGap最小的情况就是元素均匀分布在min~max之内。而

    这个size显然是要大于maxGap的最小值的。

    这道题告诉我们一个思路,构造一组桶,杜绝桶内存在解的可能,那么解一定存在于桶与桶之间。

  • 相关阅读:
    WEB上传大文件解决方案
    上传大文件的解决方案
    网页文件断点上传
    超大文件上传方案(B/S)
    asp.net选择文件夹上传
    java文件断点上传
    超大文件上传方案(网页)
    web选择文件夹上传
    jsp选择文件夹上传
    jsp文件断点上传
  • 原文地址:https://www.cnblogs.com/elnino/p/5620071.html
Copyright © 2011-2022 走看看