• 《程序员代码面试指南》第八章 数组和矩阵问题 数组排序之后相邻数的最大差值


    题目

    数组排序之后相邻数的最大差值

    java代码

    package com.lizhouwei.chapter8;
    
    /**
     * @Description: 数组排序之后相邻数的最大差值
     * @Author: lizhouwei
     * @CreateDate: 2018/5/9 21:56
     * @Modify by:
     * @ModifyDate:
     */
    public class Chapter8_26 {
        public int maxGap(int[] arr) {
            int max = Integer.MIN_VALUE;
            int min = Integer.MAX_VALUE;
            int len = arr.length;
            int maxGap = 0;
            for (int i = 0; i < arr.length; i++) {
                max = Math.max(max, arr[i]);
                min = Math.min(min, arr[i]);
            }
            boolean[] hasNum = new boolean[len + 1];
            int[] maxs = new int[len + 1];
            int[] mins = new int[len + 1];
            int index = 0;
            for (int i = 0; i < arr.length; i++) {
                index = bucket(arr[i], max, min, len);
                maxs[index] = hasNum[index] ? Math.max(maxs[index], arr[i]) : arr[i];
                mins[index] = hasNum[index] ? Math.min(mins[index], arr[i]) : arr[i];
                hasNum[index] = true;
            }
            int i = 0;
            while (i <= len) {
                if (hasNum[i++]) {
                    max = maxs[i - 1];
                    break;
                }
            }
            while (i <= len) {
                if (hasNum[i]) {
                    maxGap = Math.max(maxGap, mins[i] - max);
                    max = maxs[i];
                }
                i++;
            }
            return maxGap;
        }
    
        public int bucket(long cur, long max, long min, long len) {
            return (int) ((cur - min) * len / (max - min));
        }
    
        //测试
        public static void main(String[] args) {
            Chapter8_26 chapter = new Chapter8_26();
            int[] arr = {9, 3, 1, 10};
            int res = chapter.maxGap(arr);
            System.out.print("数组{9, 3, 1, 10}排序之后相邻数的最大差值: " + res);
        }
    }
    
    

    结果

  • 相关阅读:
    事件
    dom对象
    逻辑运算和作用域的问题
    json
    数组
    字符串
    函数
    js的数据类型和全局方法
    js
    10.16 js内容
  • 原文地址:https://www.cnblogs.com/lizhouwei/p/9017057.html
Copyright © 2020-2023  润新知