zoukankan      html  css  js  c++  java
  • letcode每日一题-最大间距

    今日每日一题,最大间距,一看难度困难,我想ctrl+c再ctrl+v,但是再一看题,嗯,,,,我好想可以

    我的代码:

    
    public int maximumGap(int[] nums) {
            Arrays.sort(nums);
            int max=0;
            for(int i=0;i<nums.length-1;i++){
                int tmp=nums[i+1]-nums[i];
                if(tmp>max){
                    max=tmp;
                }
            }
            return max;
        }
    
    


    这道题的难点在于如何用线性的时空复杂度来解决。直接sort然后遍历数组当然可以解决问题,但是面试的时候这
    种解法肯定是不能让面试官满意的。

    实现代码如下:

    
    public int maximumGap(int[] nums) {
            if(nums.length==0){
                return 0;
            }
            if(nums.length<=2){
                return Math.abs(nums[0]-nums[nums.length-1]);
            }
            int max=Arrays.stream(nums).max().getAsInt();
            int min=Arrays.stream(nums).min().getAsInt();
            //Math.max防止出现长度为0的情况
            int bucket_len=Math.max(1,(max-min)/(nums.length-1));
            ArrayList<Integer>[] buckets=new ArrayList[(max-min)/bucket_len+1];
            for(int i=0;i<nums.length;i++){
                int tmpIndex=(nums[i]-min)/bucket_len;
                if(buckets[tmpIndex]==null){
                    buckets[tmpIndex]=new ArrayList<>();
                }
                buckets[tmpIndex].add(nums[i]);
            }
            int result=0;
            int prev=-1;
            for(int i=0;i<buckets.length;i++){
                if(buckets[i]!=null){
                    Collections.sort(buckets[i]);
                    if(prev!=-1){
                        int tmp=buckets[i].stream().min((a,b)->{if(a.equals(b)){return  0;} return a>b?1:-1;}).get()-prev;
                        if(tmp>result){
                            result=tmp;
                        }
                    }
                    prev=buckets[i].stream().max((a,b)->{if(a.equals(b)){return  0;} return a>b?1:-1;}).get();
                }
            }
            return result;
        }
    
    

  • 相关阅读:
    SFTP的使用
    java操作文件的创建、删除、遍历
    ios UICollectionView滑动时操作
    IOS自带json解析类解析json
    IOS把文件保存进沙盒目录
    python3.4安装suds
    Lua for windows中SciTe开启支持python的方法
    修改tabbarcontroller选中图片及选中颜色
    Android新版本SDK打开旧版本项目报错解决
    PHP5.4连接sqlserver
  • 原文地址:https://www.cnblogs.com/MissWX/p/14042189.html
Copyright © 2011-2022 走看看