LeetCode Merge k Sorted Lists (链表)
题意
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
将K个排好序的链表合并成一个
解法
和之前合并两个有序链表那题不同,那题用的是两个指针来分别记录两个链表中的位置,将小的那个插入新链表然后指针右移,有点像归并排序时用到的方法。这题如果用K个指针来记录的话,每次需要找出最小的那个值,比较麻烦,所以采用的优先队列,首先将所有链表的第一个值入队,然后每次将值最小的一个出队插入新链表里,再将这个元素的下一个元素入队。
class Solution
{
struct Node
{
int val;
ListNode * next = nullptr;
bool operator <(const Node & r) const
{
return val > r.val;
}
};
public:
ListNode* mergeKLists(vector<ListNode*>& lists)
{
int count = lists.size();
priority_queue<Node> que;
for(int i = 0;i < lists.size();i ++)
{
Node temp;
if(lists[i])
{
temp.val = lists[i] -> val;
temp.next = lists[i] -> next;
que.push(temp);
}
}
ListNode * head = nullptr;
ListNode * cur = nullptr;
while(!que.empty())
{
ListNode * node = new ListNode(0);
Node poped = que.top();
que.pop();
node -> val = poped.val;
node -> next = poped.next;
if(poped.next)
{
Node temp;
temp.val = poped.next -> val;
temp.next = poped.next -> next;
que.push(temp);
}
if(head == nullptr)
{
head = node;
cur = node;
}
else
{
cur -> next = node;
cur = cur -> next;
}
}
return head;
}
};
LeetCode Merge k Sorted Lists (链表)的更多相关文章
- LeetCode: Merge k Sorted Lists 解题报告
Merge k Sorted Lists Merge k sorted linked lists and return it as one sorted list. Analyze and descr ...
- [LeetCode] Merge k Sorted Lists 合并k个有序链表
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 这 ...
- [Leetcode] Merge k sorted lists 合并k个已排序的链表
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 思 ...
- LeetCode:Merge k Sorted Lists
题目链接 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexi ...
- LeetCode——Merge k Sorted Lists
Discription: Merge k sorted linked lists and return it as one sorted list. Analyze and describe its ...
- leetcode -- Merge k Sorted Lists add code
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. [ ...
- Leetcode:Merge k Sorted Lists分析和实现
题目大意是传入一个链表数组lists,每个链表都由若干个链接的链表结点组成,并且每个链表结点记录一个整数.题目保证传入的链表中的整数按从小到大进行排序. 题目要求我们输出一个新的链表,这个链表中应该包 ...
- LeetCode Merge k Sorted Lists 解决报告
https://oj.leetcode.com/problems/merge-k-sorted-lists/ 归并K已经整理阵列,和分析算法的复杂. 解决报告:无论是不考虑优化,最简单的实现是要重新走 ...
- LeetCode —— Merge k Sorted Lists
/* ** 算法的思路: ** 1.将k个链表的首元素进行建堆 ** 2.从堆中取出最小的元素,放到链表中 ** 3.如果取出元素的有后续的元素,则放入堆中,若没有则转步骤2,直到堆为空 */ #in ...
随机推荐
- centOS7中Mariadb数据库安装与基本管理
一.Mariadb数据库安装 1. 直接yum源安装 yum -y install mariadb mariadb-serversystemctl start mariadb /启动Mariadb服务 ...
- 2.1Python基础语法(一)之注释与数据类型:
返回总目录 目录: 1.注释 2.乱码 3.变量 4.数据类型 5.数据的转换 6.动态,静态和强类型,弱类型 (一)注释:(编译时是被编译器忽略的) 1.注释的分类: 2.特殊注释: (二)乱码:( ...
- Geth命令用法-参数详解 and 以太坊源码文件目录
本文是对以太坊客户端geth命令的解析 命令用法 geth [选项] 命令 [命令选项] [参数-] 版本 1.7.3-stable 命令 account 管理账户 attach 启动交互式JavaS ...
- vue问题总结
1.通过判断绑定class及点击事件总结<a :class='[item.status=="yes" ? `btn-primary` : `btn-danger`]' :ti ...
- python openpyxl.md
Openpyxl 创建一个工作簿 下面是创建一个工作簿.而每个工作簿至少一个工作表我们可以通过active获取正在运行的工作表. In [1]: from openpyxl import Workbo ...
- python第二十七课——os模块
演示os模块中常用的属性和函数: 1.os模块: 作用:管理文件和目录 属性: os.name:返回系统类型 常用的windows系统 --> nt os.environ:返回当前系统所有的环境 ...
- layui 弹出层监听 判断弹出框的大小
if ($.PublicIsMobile($(window).width())) { var layerInitWidth = $("#layui-layer" + ly_dtxm ...
- spring引入properties变量报错
通过properties配置文件配置数据源,代码如下: <bean class="org.springframework.beans.factory.config.PropertyPl ...
- C#中的委托(二)
一.Action<T>和Func<T>委托 除了上篇描述的为每个参数和返回类型定义一个新委托类型之外,还可以使用Action<T>和Func<T>委托. ...
- (二)基于阿里云的MQTT远程控制(购买阿里云,在云端安装MQTT,测试MQTT远程通信)
QQ名称为Friday~的网友把他自己买MQTT的过程截图发给了我,今天就说一下如何购买阿里云,安装MQTT可以参考 http://www.cnblogs.com/yangfengwu/p/77646 ...