题解 | #合并k个已排序的链表#
合并k个已排序的链表
https://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param lists ListNode类vector * @return ListNode类 */ ListNode* mergeKLists(vector<ListNode*>& lists) { // write code here ListNode *head = new ListNode(0); if(lists.empty()) { return nullptr; } if(lists.size() == 1) { return lists[0]; } for(int i=0;i<lists.size()-1;i++) { ListNode *pHead1 = lists[i]; ListNode *pHead2 = lists[i+1]; ListNode *nHead = head; while(pHead1 && pHead2) { if(pHead1->val < pHead2->val) { nHead->next = pHead1; pHead1 = pHead1->next; } else { nHead->next = pHead2; pHead2 = pHead2->next; } nHead = nHead->next; } nHead->next = (pHead1?pHead1:pHead2); lists[i+1] = head->next; } return head->next; } };