题解 | #合并k个已排序的链表#
合并k个已排序的链表
https://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param lists ListNode类一维数组 * @param listsLen int lists数组长度 * @return ListNode类 */ #include <stdlib.h> struct ListNode* mergeKLists(struct ListNode** lists, int listsLen ) { // write code here if(listsLen == 0) return NULL; struct ListNode* pHead = (struct ListNode*)malloc(sizeof(struct ListNode)); pHead->val = -1; struct ListNode* cur = pHead; for (int i=0; i<listsLen-1; i++) { while (lists[i] && lists[i+1]) { if(lists[i]->val < lists[i+1]->val) { cur->next = lists[i]; lists[i] = lists[i]->next; } else { cur->next = lists[i+1]; lists[i+1] = lists[i+1]->next; } cur = cur->next; } cur->next = lists[i]?lists[i]:lists[i+1]; lists[i+1] = pHead->next; pHead->next = NULL; cur = pHead; } return lists[listsLen-1]; }