zoukankan      html  css  js  c++  java
  • [leedcode] Maximum Gap

    题目:(Sort)

    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.

    题解:

    桶排序!!

    public class Solution {
        public int maximumGap(int[] num) {
            if(num==null||num.length<2)
               return 0;
               
            int min=num[0];
            int max=num[0];
            
            for(int i:num)
            {
               min= Math.min(min,i);
               max= Math.max(max,i);
            }
            
            int gap = (int)Math.ceil((double)(max-min)/(num.length-1));
            int [] bucketMin = new int [num.length-1];
            int [] bucketMax = new int [num.length-1];
            
            Arrays.fill(bucketMin, Integer.MAX_VALUE);
            Arrays.fill(bucketMax, Integer.MIN_VALUE);
            
            for(int i:num)
            {
                if(i==min||i==max)
                  continue;
                  
                int index = (i-min)/gap ;
                bucketMin[index] = Math.min(i,bucketMin[index]);
                bucketMax[index] = Math.max(i,bucketMax[index]);
            }
            
            int prev =min;
            int maxGap = Integer.MIN_VALUE;
            for(int i=0 ; i<num.length-1; i++)
            {
                if(bucketMin[i]==Integer.MAX_VALUE||bucketMax[i]==Integer.MIN_VALUE)
                   continue ;
                
                maxGap=Math.max(bucketMin[i]-prev,maxGap);
                prev=bucketMax[i];
            }
            
            maxGap = Math.max(max-prev,maxGap);
            return maxGap;
        }
    }
  • 相关阅读:
    Hive学习之路 (三)Hive元数据信息对应MySQL数据库表
    Hive学习之路 (二)Hive安装
    Hive学习之路 (一)Hive初识
    MyBatis+Spring SQL效率测试报告
    Java NIO
    Endianess(字节次序)简介
    Maven重复类的解决
    [转]Unicode和UTF-8的关系
    Java IO 体系结构
    建造者模式(Builder)
  • 原文地址:https://www.cnblogs.com/fengmangZoo/p/4192746.html
Copyright © 2011-2022 走看看