21. 合并两个有序链表 简单
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1:
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
示例 2:
输入:l1 = [], l2 = []
输出:[]
示例 3:
输入:l1 = [], l2 = [0]
输出:[0]
提示:
- 两个链表的节点数目范围是 [0, 50]
- -100 <= Node.val <= 100
- l1 和 l2 均按 非递减顺序 排列
代码参考:
package main
import "fmt"
func main() {
fmt.Println(mergeTwoLists(newList([]int{1}), newList([]int{})))
}
// 借助哑节点,万事大吉
func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {
cur := new(ListNode)
dummy := cur
cur1, cur2 := l1, l2
for cur1 != nil && cur2 != nil {
if cur1.Val < cur2.Val {
cur.Next = cur1
cur1 = cur1.Next
} else {
cur.Next = cur2
cur2 = cur2.Next
}
cur = cur.Next
}
traverse := func(l, remainL *ListNode) {
for remainL != nil {
l.Next = remainL
l = l.Next
remainL = remainL.Next
}
}
traverse(cur, cur1)
traverse(cur, cur2)
return dummy.Next
}
最后编辑: kuteng 文档更新时间: 2021-11-18 10:16 作者:kuteng