题目描述:
https://leetcode-cn.com/problems/merge-k-sorted-lists/
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。
示例:
输入:
[
1->4->5,
1->3->4,
2->6
]
输出: 1->1->2->3->4->4->5->6
题目分析:
直接将所有链表遍历,存放到list中,然后排序,然后再构造节点;该解法的性能瓶颈在于使用什么排序算法
分治算法啥的,直接不写了,烦躁
Java代码:
// 暴力解法, 将所有数据存入list, 排序后, 创建ListNode public ListNode mergeKLists1(ListNode[] lists) { List<Integer> valList = new ArrayList<>(); for (ListNode listNode : lists) { ListNode curNode = listNode; while (curNode != null) { valList.add(curNode.val); curNode = curNode.next; } } if (valList.isEmpty()) { return null; } Collections.sort(valList); ListNode newNode = new ListNode(valList.get(0)); ListNode tmpNode = newNode; for (int i = 1; i < valList.size(); i++) { ListNode node = new ListNode(valList.get(i)); tmpNode.next = node; tmpNode = node; } return newNode; }
力扣运行结果: