合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。
示例:
输入:
[
1->4->5,
1->3->4,
2->6
]
输出: 1->1->2->3->4->4->5->6
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* swapPairs(struct ListNode* head){
struct ListNode*node=NULL;
struct ListNode*tmp=NULL;
struct ListNode*first=NULL;
struct ListNode*next=NULL;
while(head)
{
if(!head->next)
{
if(!node)
{
node=head;
}
break;
}
first=head;
next=head->next;
head=next->next;
first->next=head;
next->next=first;
if(!node)
{
node=next;
tmp=first;
}
else
{
tmp->next=next;
tmp=first;
}
}
return node;
}
执行用时 : 4 ms, 在Swap Nodes in Pairs的C提交中击败了97.53% 的用户
内存消耗 : 7.2 MB, 在Swap Nodes in Pairs的C提交中击败了74.07% 的用户