/**
* 求数组排序后相邻数的最大差值
* @author Administrator
* {9,3,1,10} 返回6
*/
public class test12 {
public static void main(String[] args) {
int[] arr = {9,3,1,10};
System.out.println(maxGap(arr));
}

public static int maxGap(int[] arr){if(arr==null||arr.length==0){return 0;}int len = arr.length;int max = Integer.MIN_VALUE;int min = Integer.MAX_VALUE;for(int i=0;i<len;i++){max = Math.max(arr[i], max);min = Math.min(arr[i], min);}if(max==min){return 0;}int[] maxArr = new int[len+1];int[] minArr = new int[len+1];boolean[] hasNum = new boolean[len+1];int k = 0;for(int i=0;i<len;i++){k = getBucket(arr[i], max, min, len);maxArr[k] = hasNum[k] ? Math.max(arr[i], maxArr[k]) : arr[i];minArr[k] = hasNum[k] ? Math.min(arr[i], minArr[k]) : arr[i];hasNum[k] = true;}int lastMax = 0;int nextMin = 0;int i = 0;for(; i<len; i++){if(!hasNum[i]){lastMax = maxArr[i-1];break;}}while(i<len+1){if(hasNum[i]){nextMin = minArr[i];break;}i++;}return nextMin-lastMax;
}
/*** 计算进入哪个桶  max直接放入n+1桶中 */
public static int getBucket(int num, int max, int min, int len){return ((num-min)*len)/(max-min);
}

}

求数组排序后相邻数的最大差值相关推荐

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

    数组排序之后相邻数的最大差值 题目描述 给定一个整形数组arr,返回排序后相邻两数的最大差值 arr = [9, 3, 1, 10].如果排序,结果为[1, 3, 9, 10],9和3的差为最大差值, ...

  2. 给定一个未排序的数组,求如果数组排序之后,相邻数的最大差值。

    给定一个未排序的数组,求如果数组排序之后,相邻数的最大差值.要求时间复杂度为O(n),且要求不能用非基于比较的排序. 首先,这个问题明显限制了不能使用直接排序的方式求解.因为基于比较的排序时间复杂度最 ...

  3. 对一个数组排序之后求相邻数的最大差值

    题目: 给定一个整形数组arr,返回排序后的相邻两数的最大差值. 时间复杂度为O(N). 解答: 如果用排序法实现,其时间复杂度为O(NlogN),而如果利用桶排序的思想(不是桶排序),可以做到O(N ...

  4. 数据排序之后相邻数的最大差值

    我发表的文章不多,经验可能不够,大家有什么建议或者问题欢迎来评论,大家互相学习,共同进步. 问题及分析 1.给定一个整型数组arr,返回排序后的相邻两数的最大差值:数组的长度为N,要求时间复杂度为O( ...

  5. 给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N),且要求不能用非基于比较的排序。

    给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N),且要求不能用非基于比较的排序. import java.util.Arrays;public class MaximumDif ...

  6. 如何得出数组里最大_相邻两数的最大差值(超巧妙解法)

    题目: 给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N),且不能用非基于比较的排序 解法: 首先,输入的数组是还没有排好序的,题目要求是不能使用非基于比较的排序而且排序算法的时 ...

  7. hdu 4587 2013南京邀请赛B题/ / 求割点后连通分量数变形。

    题意:求一个无向图的,去掉两个不同的点后最多有几个连通分量. 思路:枚举每个点,假设去掉该点,然后对图求割点后连通分量数,更新最大的即可.算法相对简单,但是注意几个细节: 1:原图可能不连通. 2:有 ...

  8. 对tf.reduce_mean API的理解就是求平均值,reduce指的是一串数据求平均值后维数降低了,可不是吗,一串向量变成了一个数,维数自然降低了

    tf.math.reduce_mean(input_tensor, axis=None, keepdims=False, name=None ) 对tf.reduce_mean的理解就是求平均值,re ...

  9. 实现输入10个数,输出这10个数的和,平均值;输出该组数中数与数的最大差值;再输入一个数,然后确定它在这个数组中第一次出现的位置,如果没有该数则输出-1,否则输出其下标

    实现输入10个数,输出这10个数的和,平均值:输出该组数中数与数的最大差值:再输入一个数,然后确定它在这个数组中第一次出现的位置,如果没有该数则输出-1,否则输出其下标 int main() //程序 ...

最新文章

  1. 旅游网站的主页代码_一个在优化的网站主页内容应该如何设计?
  2. 5.Qt自定义Button按钮的实现
  3. 离散实验偏序关系满足实验报告C语言,离散数学实验三:偏序关系中盖住关系的求取及格论中有补格的判定...
  4. Django视图(二)
  5. this 和super关键字
  6. [LeetCode] 143. Reorder List_Middle tag: Linked List
  7. Android 应用开发(8)---语言和语言区域
  8. uniapp语音识别_uni-app开发APP语音播报功能
  9. WordPress快速开发的博客平台
  10. linux小米随身wifi,小米随身wifi for mac版详细使用图文步骤
  11. Hibernate(四)
  12. electron 打开选择文件框
  13. 哲学家就餐问题python解决_哲学家进餐问题-3中解决方案
  14. 解决手机应用安装失败却占内存
  15. 多线程导出excel高并发_用多线程优化Excel表格数据导入校验的接口
  16. 如何用java股票量化交易接口读取股票数据?
  17. 7家自媒体创业项目平台收益技巧和差异对比,你适合哪个?
  18. 利用OpenGL设计贪吃蛇游戏
  19. 计算机应用基础0006 19春在线作业2,《计算机应用基础0006》19春在线作业 参考资料...
  20. 5年没发paper,读博想放弃?科大博导万字自述:曾连收13封拒稿信

热门文章

  1. c语言中保存字符串实质上是,在C语言中,保存字符串“B”实质上是保存字符B和\0两个符号。...
  2. 计算机 手机原理是什么,什么是手机投屏,手机投屏到电脑上的原理
  3. 最近项目开发再一次遇到了启动idea报错:Plugin Error Problems found loading plugins: Plugin “GlassFish Integration“ was
  4. Graccvs文件正文提取开发组件--文件内容搜索的利器
  5. 【flask】适合生产环境的高并发部署方案(gunicorn + gevent + supervisor)
  6. 网络基础—HTTP、HTPPS、GET、POST、Socket
  7. [POI2008]枪战Maf
  8. (电脑软件启动无法验证)win10专业版如何解决无法验证发布者
  9. 香农和图灵的边界|网络和计算的本质
  10. 漫步数学分析十九——介值定理