残缺的排列题解

首先我们可以明确的是,除了已经规定好相对顺序的m个数,其他数肯定按照从小到大的方式填最优。
接着根据这个思路,我们有一个这样的算法:
一开始我们将剩下的n-m个数放进堆(小根堆)里,然后将m个数中的第一个数放进堆中并给这个数做标记,每次弹出堆顶并输出,当弹出了做过标记的数时,往堆中放入m个数中的第二个数并做标记......知道m个数全部放进堆中且堆被弹空。
这个算法同时保证了其他数按照从小到大的顺序,且同时保证了m个已知数的相对顺序。
复杂度O(nlogn)

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 17:30
点赞 评论 收藏
分享
05-19 15:21
已编辑
华南农业大学 Java
白火同学:你才沟通了200,说实话,北上广深杭这里面你连一座城市的互联网公司都没投满呢,更别说还有各种准一线二线城市了。等你沟通突破了三位数,还没结果再考虑转行的事吧。
点赞 评论 收藏
分享
白火同学:大二有这水平很牛了,可以适当对关键信息加粗一点,比如关键技术、性能指标之类的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务