LeetCode | 23. Merge k Sorted Lists
2018-01-31 19:36
253 查看
题目:
Merge k sorted
linked lists and return it as one sorted list. Analyze and describe its complexity.
题意:
将k个排序好的链表融合为一个排序链表。
代码:
ListNode* mergeKLists(vector<ListNode*>& lists) {
ListNode* head = NULL;
if (lists.size() < 1)
return head;
head = lists[0];
for (int i = 1; i < lists.size(); i++)
{
ListNode *q = lists[i], *p = head, *preP = head;
if (q == NULL)
continue;
while (p != NULL || q != NULL)
{
if (p == NULL)
{
if (preP == NULL)
head = q;
else
preP->next = q;
break;
}
if (q == NULL)
break;
if (p->val < q->val)
{
preP = p;
p = p->next;
}
else
{
ListNode *startQ = q, *endQ = q;
while (q!=NULL && p->val >= q->val)
{
endQ = q;
q = q->next;
}
if (preP == p) // append to the head node
{
head = startQ;
endQ->next = p;
}
else
{
preP->next = startQ;
endQ->next = p;
}
}
}
}
return head;
}
题外话:
太久不更博~月底加月食,充满刺激和挑战的一月,感恩和感谢。二月,期待~
Merge k sorted
linked lists and return it as one sorted list. Analyze and describe its complexity.
题意:
将k个排序好的链表融合为一个排序链表。
代码:
ListNode* mergeKLists(vector<ListNode*>& lists) {
ListNode* head = NULL;
if (lists.size() < 1)
return head;
head = lists[0];
for (int i = 1; i < lists.size(); i++)
{
ListNode *q = lists[i], *p = head, *preP = head;
if (q == NULL)
continue;
while (p != NULL || q != NULL)
{
if (p == NULL)
{
if (preP == NULL)
head = q;
else
preP->next = q;
break;
}
if (q == NULL)
break;
if (p->val < q->val)
{
preP = p;
p = p->next;
}
else
{
ListNode *startQ = q, *endQ = q;
while (q!=NULL && p->val >= q->val)
{
endQ = q;
q = q->next;
}
if (preP == p) // append to the head node
{
head = startQ;
endQ->next = p;
}
else
{
preP->next = startQ;
endQ->next = p;
}
}
}
}
return head;
}
题外话:
太久不更博~月底加月食,充满刺激和挑战的一月,感恩和感谢。二月,期待~
相关文章推荐
- [Leetcode] 23. Merge k Sorted Lists
- LeetCode(23)Merge k Sorted Lists
- [leetcode-排序]--23. Merge k Sorted Lists
- LeetCode - 23. Merge k Sorted Lists
- leetcode 23. Merge k Sorted Lists
- LeetCode(23)Merge k Sorted Lists
- LeetCodet题解--23. Merge k Sorted Lists(合并K个已排序的链表)
- [leetcode]23. Merge k Sorted Lists
- 个人记录-LeetCode 23. Merge k Sorted Lists
- leetcode 23. Merge k Sorted Lists
- LeetCode 23 Merge k Sorted Lists 高空间消耗解法与堆的解法,还需要学习堆的做法
- Leetcode-23: Merge k Sorted Lists
- leetcode_23_Merge k Sorted Lists
- LeetCode 23 Merge k Sorted Lists
- [leetcode] 23.Merge k Sorted Lists
- leetcode: 23. Merge k Sorted Lists
- [Leetcode] 23. Merge k Sorted Lists
- leetcode[23]Merge k Sorted Lists
- LeetCode-23-Merge-k-Sorted-Lists Python倒循环
- 蜗牛慢慢爬 LeetCode 23. Merge k Sorted Lists [Difficulty: Hard]