题解 | #合并k个已排序的链表#
合并k个已排序的链表
https://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param lists ListNode类一维数组 * @param listsLen int lists数组长度 * @return ListNode类 */ struct ListNode* mergeKLists(struct ListNode** lists, int listsLen ) { if (listsLen == 1 | listsLen == 0) { return lists[0]; } int a = listsLen - 1; struct ListNode* list1 = lists[a - 1], *list2 = lists[a]; struct ListNode* sum = malloc(sizeof(struct ListNode)); struct ListNode* H = sum; while (1) { if (list1 == NULL) { sum->next = list2; break; } else if (list2 == NULL) { sum->next = list1; break; } else if (list1->val < list2->val) { sum->next = list1; list1 = list1->next; sum = sum->next; if (list1 == NULL) { sum->next = list2; break; } } else { sum->next = list2; list2 = list2->next; sum = sum->next; if (list2 == NULL) { sum->next = list1; break; } } } lists[a - 1] = H->next; return mergeKLists(lists, a); }#递归算#