首页 > 其他分享 >leetcode -- Maximum Gap -- 与distributed sorting有关,重点复习一下

leetcode -- Maximum Gap -- 与distributed sorting有关,重点复习一下

时间:2023-06-30 19:01:32浏览次数:45  
标签:sort sorting -- bucket distributed gap radix 排序 com


https://leetcode.com/problems/maximum-gap/

sort 算法除了比较算法之外,还有distributed sort,时间效率可以优于O(nlogn),甚至可以达到O(n).包括couting sort, bucket sort, radix sort.

复习这三种的原理。
参考https://www.byvoid.com/blog/sort-radix

这里对于bucket sort,提到

可能你会发现,计数排序似乎饶了点弯子,比如当我们刚刚统计出C,C[i]可以表示A中值为i的元素的个数,此时我们直接顺序地扫描C,就可以求出排序后的结果。的确是这样,不过这种方法不再是计数排序,而是桶排序(Bucket Sort),确切地说,是桶排序的一种特殊情况。

用这种方法,可以很容易写出程序,比计数排序还简单,只是不能求出稳定的Order。

这里就解释了我对counting sort的疑惑,count了之后其实可以直接再scan一遍c就可以得到排序的结果了,这样其实就变成了bucket sort。

这里还要注意bucket sort,分配元素到每个bucket的方式,每个bucket的范围已经是有序的了,所以也就是最后只需要scan一下每个bucket就得到了排序的结果。而最极端的情况就是最大值是k,那么就分配k个bucket。这样就是O(n)的了,

通常

当桶的个数M接近于N是,桶排序的时间复杂度就可以近似认为是O(N)的。就是桶越多,时间效率就越高,而桶越多,空间却就越大,由此可见时间和空间是一个矛盾的两个方面。

所以一般可以认为bucket sort可以达到最好的time complexity O(n)

这题目就是bucket sort或者radix sort之后,再找gap就行了

排序算法参考
http://www.jianshu.com/p/ae97c3ceea8d#
https://www.byvoid.com/blog/sort-radix

关于这道题:
http://yucoding.blogspot.hk/2014/12/leetcode-question-maximum-gap.html
http://bookshadow.com/weblog/2014/12/14/leetcode-maximum-gap/


标签:sort,sorting,--,bucket,distributed,gap,radix,排序,com
From: https://blog.51cto.com/u_16172916/6592934

相关文章

  • 建网站流程
    1.买域名godaddy上2.买服务器空间godaddy,有一个月,3个月,12个月付费的,无root权限digitalocean,每个月5刀,每月支付,有root权限。googlecomputerengine。3.改域名指向你空间的IP例如:在godaddy上买的域名,只要在DNSzonefile里面修改Ahost的ip指向你购买的空间IP,就行了......
  • github第三登录
    文章目录第三方登录包创建应用编写代码:oauth2协议github的api简单的认证登录通过justAuth就写完了,自己写的第三方登录包自己使用的:justauth码云文档很详细.我就自己写我是怎么弄得,记录自己的操作过程:创建应用进入github用户的setting,填写:然后就会生成ClientID和密码:......
  • 爬取自己的csdn目录
    导包就不细说了:<!--https://mvnrepository.com/artifact/net.sourceforge.htmlunit/htmlunit--> <dependency> <groupId>net.sourceforge.htmlunit</groupId> <artifactId>htmlunit</artifactId> <version>2.35.0</versi......
  • 谷歌浏览器查看常用密码
      选择一个,点击眼睛,可以查看忘记的密码 ......
  • CodeTON Round 5 (Div. 1 + Div. 2, Rated, Prizes!)C
    CodeTONRound5(Div.1+Div.2,Rated,Prizes!)CC(dp)C题目给出一个数组,我们可以在这一个数组里面找出\(a_i\)和\(a_j\)其中\(i\)和\(j\)不相等,并保证\(a_i=a_j\),这样我们就可以把\(i-j\)这一段区间的所有数字都删除,问我们怎样删除才可以使删除的数字数量最多很明显,这是......
  • docker swarm 集群部署Kafka3.5,彻底告别zookeeper
    介绍本次部署kafka3.5版本,彻底告别zookeeper时代,部署更加轻量,运维更加简单同时使用比较好用的kafka控制台redpandadatadockerswam集群搭建详见我的另一篇博客DockerSwarm集群搭建,不再这里赘述。docker-compose文件准备docker-compose-kafka3-cluster.ymlversi......
  • 记录--让整个网站界面无滚动条
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助界面无滚动条滚动条的优化也有很多种,比如随便再网上搜索美化浏览器滚动条样式,就会出现些用css去美化滚动条的方案。那种更好呢?没有更好只有更合适像默认的滚动条的话,他能让你方便摁着往下滑动(他比较宽)特别省......
  • Docker安装MySQL8.0
    安装拉取镜像默认拉取最新版本的镜像$dockerpullmysql如果要指定版本,使用下面的命令$dockerpullmysql:8.0.16创建数据目录和配置文件 在宿主机创建放置mysql的配置文件的目录和数据目录,并且进行授权$mkdir-p/usr/mysql/conf/usr/mysql/data$chmod-R755/usr/m......
  • 【C#/.NET】MAUI上的依赖注入
    ​引言        在移动应用开发中,依赖注入是一项非常重要的技术,它可以帮助我们简化代码结构、提高可维护性并增加测试覆盖率。在最新的.NET跨平台框架MAUI中,我们也可以利用依赖注入来构建高效的应用程序架构。本文将详细介绍在MAUI上如何使用依赖注入,旨在帮助开发者更好......
  • Delphi宽字符批量去除#0方法
    functionDelCRLF(src:String):String;varn,M:Integer;beginSetLength(Result,Length(src));n:=0;form:=1toLength(src)doif(src[M]=#0)thencontinueelsebeginInc(n);Result[n]:=src[M];end;SetLengt......