题目:合并K个排序链表
原题链接:合并K个排序链表
这道题我的思路是这样的:遍历所有的链表,然后把所有节点的数据域都存在一个vector中,再对vector中元素进行排序,最后根据vector来建立一个链表即可。
代码如下:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* mergeKLists(vector<ListNode*>& lists) {
vector<int> merge;
for(int i = 0; i < lists.size(); i++)
{
ListNode *p = lists[i];
while(p != NULL)
{
merge.push_back(p->val);
p = p->next;
}
}
sort(merge.begin(), merge.end());
ListNode *head = new ListNode();
ListNode *p = head;
for(int i = 0; i < merge.size(); i++)
{
p->next = new ListNode(merge[i]);
p = p->next;
}
return head->next;
}
};
提交结果:
题外话:
人类总是从自己选择的人生,看向自己没有选择的另一种人生,感到羡慕,感到后悔。
——川村元气《如果这世界猫消失了》