虽然有序链表的合并做起来不复杂,但是每次做一次我就有不同的感受。
下面给出两个合并有序链表的题目,一道easy
和一道hard
.
21. 合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
1 | 输入:1->2->4, 1->3->4 |
思想: 迭代的想法我就不赘述了,这里主要是写下递归的解法.
关于递归的解法我下面给出个链接, 链接给出的ppt
很好的说明了链表是如何用递归实现合并的.
1 | class Solution { |
23. 合并K个升序链表
*思路1: * 用priority_queue
每次找到当前节点中最小值
1 | class Solution { |
思路2: 用上述的归并,只不过每次归并所得的链表再与剩下的链表继续归并.
1 | class Solution { |