当前位置: 首页 > news >正文

wordpress 全站ajax小程序开发平台官网

wordpress 全站ajax,小程序开发平台官网,京东云服务器,建设工程材料网站无序数组排序后的最大相邻差 问题:一个无序的整型数组,求出该数组排序后的任意两个相邻元素的最大差值?要求时间和空间复杂度尽可能低。 三种方法: 排序后计算比较 简介:用任意一种时间复杂度为 O ( n log ⁡ n ) O…

无序数组排序后的最大相邻差

问题:一个无序的整型数组,求出该数组排序后的任意两个相邻元素的最大差值?要求时间和空间复杂度尽可能低。

三种方法:

  1. 排序后计算比较

    • 简介:用任意一种时间复杂度为 O ( n log ⁡ n ) O(n \log n) O(nlogn) 的排序算法给原数组排好序。然后遍历排序好的数组,并对每两个相邻元素求差,最终得到最大差值。
    • 思考:时间复杂度为 O ( n log ⁡ n ) O(n \log n) O(nlogn),在不改变原数组的情况下,空间复杂度为 O ( n ) O(n) O(n)(存储排序好的数组)。但这道题显然不是用来排序的。
  2. 利用计数排序的思想

    • 简介:求出原数组的最大最小值max和min,区间长度k=max - min +1,偏移量 min。创建一个长度为k的数组。遍历原数组,若原数组值为n,则array[n-min]的值加1。遍历新数组,统计最大连续出现0值的次数+1,就是相邻元素的最大差值。
    • 思考:若原数组是 1, 10000003,10000006 这三个元素呢,没办法了,想到了桶排序好像可以解决这个问题
  3. 利用桶排序的思想

    • 简介:根据原数组长度n,创建n个桶,每个桶代表一个区间范围,区间跨度是(max - min) / (n-1)。遍历原数组,对应元素放到桶中,记录每个桶的最大最小值。遍历桶,统计每个桶的最大值和右侧非空桶的最小值的差,数值最大的差即为最大相邻差。

    • 代码:

      public class MaxSortedDistance {public static int getMaxSortedDistance(int[] array){//1.得到原数组的最大值和最小值 和 区间跨度int max = array[0];int min = array[0];for(int i=1; i<array.length; i++) {if(array[i] > max) {max = array[i];}if(array[i] < min) {min = array[i];}}int d = max - min;//如果max和min相等,说明数组所有元素都相等,返回0if(d == 0){return 0;}//2.初始化桶,桶的数量和元素的数量一样多int bucketNum = array.length;Bucket[] buckets = new Bucket[bucketNum];for(int i = 0; i < bucketNum; i++){buckets[i] = new Bucket();}//3.遍历原始数组,确定每个桶的最大最小值for(int i = 0; i < array.length; i++){//确定数组元素所归属的桶下标int index = ((array[i] - min)  * (bucketNum-1) / d);// 存到合适的最大最小值的位置if(buckets[index].min==null || buckets[index].min>array[i]){buckets[index].min = array[i];}if(buckets[index].max==null || buckets[index].max<array[i]){buckets[index].max = array[i];}}//4.遍历桶,找到最大差值int leftMax = buckets[0].max;  // 存储第一个桶的最大值int maxDistance = 0;for (int i=1; i<buckets.length; i++) {// 如果右侧的桶没有最小值,就直接遍历下一个桶if (buckets[i].min == null) {  continue;}// 记录好最大差if (buckets[i].min - leftMax > maxDistance) {maxDistance = buckets[i].min - leftMax;}leftMax = buckets[i].max;}// 返回最大相邻差return maxDistance;}/*** 桶,只存储最大值和最小值*/private static class Bucket {Integer min;Integer max;}public static void main(String[] args) {int[] array = new int[] {7,2,2,9,1,22,6};System.out.println(getMaxSortedDistance(array));}
      }
    • 时间复杂度和空间复杂度都是 O ( n ) O(n) O(n)

http://www.hkea.cn/news/447378/

相关文章:

  • 楼市最新消息2022年房价走势seo网络推广经理
  • wordpress免费中文企业主题seo权重优化软件
  • 周口网站建设哪家好济南专业seo推广公司
  • 济南网站忧化怎么把抖音关键词做上去
  • 网站建设与维护的题目网站点击软件排名
  • 网站收录服务企业网络的组网方案
  • nba排名灰色词seo排名
  • 如何建自己的个人网站深圳市seo上词多少钱
  • 迎访问中国建设银行网站_永久免费的电销外呼系统
  • 类似AG网站建设网络营销的十大特点
  • 河北盘古做的网站用的什么服务器品牌策划与推广
  • 做网站开发的是不是程序员品牌营销与推广
  • 安卓android软件seo搜索引擎优化方式
  • 网站设计培训课程引流推广平台
  • 做淘宝美工需要知道的网站app软件推广平台
  • 做自己个人网站搜索竞价
  • 兰州网站优化哪家好手机系统流畅神器
  • 广东深圳住房和城乡建设部网站文章优化软件
  • java制作动态网站开发怎么可以让百度快速收录视频
  • 做网站管理好吗阳泉seo
  • 网站排名优化建设seo人人网
  • html5可以做动态网站惠州seo计费
  • 商城网站带宽控制河南网站建设哪家公司好
  • 贵阳网络公司网站建设网络推广公司深圳
  • 企业网站建设公司电话西安seo分析报告怎么写
  • 岳阳市政府网网站seo优化报告
  • 门头沟网站建设外贸谷歌推广
  • 铜陵市住房和城乡建设委员会网站中国最新疫情最新消息
  • 动态网站建设 教程接广告推广的平台
  • 人力资源和社会保障部是干什么的seo最新快速排名