Leetcode 23——合并K个排序链表 C++
此题的解法可以借鉴归并排序的做法,也体现了分治的思想: 首先实现一个合并两个链表的函数mergeTwoLists; 再将合并lists中所有的链表这个大问题,分解成“合并左部分的一半,再合并右边的一半,最后再进行一次合并”这样的小问题,并且这个小问题还可以继续细分下去,直到变成只需要合并两个链表,这样的步骤可以递归进行实现: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public : ListNode * mergeTwoLists ( ListNode * l1 , ListNode * l2 ) { ListNode * ans = new ListNode ( - 1 ) ; ListNode * res = ans ; while ( l1 != NULL && l2 != NULL ) { if ( l1 - > val <= l2 - > val ) { ListNode * tmp = new ListNode ( l1 - > val ) ; ans - > next = tmp ; l1 = l1