题解 | #合并k个已排序的链表#
合并k个已排序的链表
https://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ #include <iostream> class Solution { public: ListNode* mergeTwo(ListNode* nodes1, ListNode* nodes2) { ListNode* newNodes; if (nodes1 == nullptr) { newNodes = nodes2; return newNodes; } else if (nodes2 == nullptr) { newNodes = nodes1; return newNodes; } if (nodes1->val <= nodes2->val) { newNodes = nodes1; nodes1 = nodes1->next; } else { newNodes = nodes2; nodes2 = nodes2->next; } ListNode* headNodes = newNodes; while (true) { if (nodes1 == nullptr) { newNodes->next = nodes2; break; } else if (nodes2 == nullptr) { newNodes->next = nodes1; break; } else if (nodes1->val <= nodes2->val) { newNodes->next = nodes1; newNodes = newNodes->next; nodes1 = nodes1->next; } else { newNodes->next = nodes2; newNodes = newNodes->next; nodes2 = nodes2->next; } } return headNodes; } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param lists ListNode类vector * @return ListNode类 */ ListNode* mergeKLists(vector<ListNode*>& lists) { // write code here ListNode* newNodes = nullptr; for (auto& list : lists) { newNodes = mergeTwo(newNodes, list); } return newNodes; } };
在线编程练习 文章被收录于专栏
C++在线编程练习题解