博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【LeetCode】23. Merge k Sorted Lists
阅读量:6416 次
发布时间:2019-06-23

本文共 1698 字,大约阅读时间需要 5 分钟。

Merge k Sorted Lists

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.

 

多路归并。

1、用make_heap函数维护一个大小为k的最小堆。

注:由于默认是最大堆,因此需要自定义compare函数。

注意:comp需要定义为static或者全局函数,因为make_heap、pop_heap、push_heap都是全局库函数。

2、取出最小元素(即lists[0]),用pop_heap函数将最小元素移到最后

3、若原lists[0],即当前的lists[last]还有后继结点,则用push_heap将其后继结点调整入堆。

否则该链表归并完毕,删除。

 

重复2、3直到所有链表都归并完毕。

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    static bool comp(ListNode* l1, ListNode* l2)    {        return l1->val > l2->val;   // min heap    }        ListNode *mergeKLists(vector
&lists) { ListNode* newhead = new ListNode(-1); ListNode* tail = newhead; //remove empty list first vector
::iterator it = lists.begin(); while(it != lists.end()) { if(*it == NULL) lists.erase(it); else it ++; } //init heap make_heap(lists.begin(), lists.end(), comp); while(!lists.empty()) { //move the min to the end and adjust pop_heap(lists.begin(), lists.end(), comp); ListNode* curmin = lists[lists.size()-1]; lists.pop_back(); if(curmin->next != NULL) { lists.push_back(curmin->next); //add the new element to the heap and adjust push_heap(lists.begin(), lists.end(), comp); } tail->next = curmin; tail = tail->next; tail->next = NULL; } return newhead->next; }};

转载地址:http://tjpra.baihongyu.com/

你可能感兴趣的文章
Mac上搭建ELK
查看>>
443 Chapter7.Planning for High Availability in the Enterprise
查看>>
框架和语言的作用
查看>>
unidac连接ORACLE免装客户端驱动
查看>>
Cygwin + OpenSSH FOR Windows的安装配置
查看>>
咏南中间件支持手机客户端
查看>>
fastscript增加三方控件之二
查看>>
Windows Vista RTM 你准备好了么?
查看>>
Tensorflow Serving 模型部署和服务
查看>>
Java Web开发详解——XML+DTD+XML Schema+XSLT+Servlet 3.0+JSP 2.2深入剖析与实例应用
查看>>
topcoder srm 680 div1 -3
查看>>
具体数学第二版第四章习题(1)
查看>>
高效前端优化工具--Fiddler入门教程
查看>>
【翻译】我钟爱的HTML5和CSS3在线工具
查看>>
Java多线程学习(吐血超详细总结)
查看>>
css3 变形
查看>>
Win7 64bit 安装Mysql5 出错 无法启动服务。
查看>>
嵌入式 H264参数语法文档: SPS、PPS、IDR以及NALU编码规律
查看>>
初识Opserver,StackExchange的监控解决方案
查看>>
给大家讲解一下JavaScript与后台Java天衣无缝相结合
查看>>