【LeetCode】23. Merge k Sorted Lists
2017-03-01 14:13
344 查看
【LeetCode】23. Merge k Sorted Lists
【题目描述】
Merge k sortedlinked lists and return it as one sorted list. Analyze and describe its complexity.
【输入输出】
无【解题思路】
分治思想+递归,将链表组均分为两部分分别排序,再对得到的两个链表进行排序。【代码】
class Solution { public: ListNode* mergeKLists(vector<ListNode*>& lists) { if (lists.empty()) return NULL; else if (lists.size() == 1) return lists[0]; else { vector<ListNode*> leftV, rightV; leftV.assign(lists.begin(), lists.begin() + lists.size() / 2); rightV.assign(lists.begin() + lists.size() / 2, lists.end()); ListNode* p = mergeKLists(leftV); ListNode* q = mergeKLists(rightV); ListNode *ans = NULL, *sortedList = NULL; while (p || q) { if (p && q) { if (!ans) { sortedList = (p->val <= q->val) ? (new ListNode(p->val)) : (new ListNode(q->val)); ans = sortedList; } else { sortedList->next = (p->val <= q->val) ? (new ListNode(p->val)) : (new ListNode(q->val)); sortedList = sortedList->next; } if (p->val <= q->val) p = p->next; else q = q->next; } else if (!p) { if (!ans) { sortedList = new ListNode(q->val); ans = sortedList; } else { sortedList->next = new ListNode(q->val); sortedList = sortedList->next; } q = q->next; } else { if (!ans) { sortedList = new ListNode(p->val); ans = sortedList; } else { sortedList->next = new ListNode(p->val); sortedList = sortedList->next; } p = p->next; } } return ans; } } };
相关文章推荐
- 【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 [Difficulty: Hard]
- [Leetcode]23. Merge k Sorted Lists @python
- [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(合并k个有序单链表)
- leetcode 23. Merge k Sorted Lists
- leetcode-23Merge k Sorted Lists
- Leetcode 23. Merge k Sorted Lists合并k个排序链表
- Leetcode 23. Merge k Sorted Lists
- LeetCode 23 Merge k Sorted Lists,28ms beats 99% cpp.
- leetcode 23: Merge k Sorted Lists
- [Leetcode 50] 23 Merge K Sorted Lists
- leetcode 23. Merge k Sorted Lists