题目描述
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
示例1:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
解题思路
- 新建一个链表头
- 遍历两个链表,直到某个到头。按大小将两个链表的节点添加在新链表之后
- 遍历完,检查两个链表剩余的元素
代码实现
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {
if l1 == nil && l2 == nil {
return nil
}
res := &ListNode{Val: 0}
pre := res
for l1 != nil && l2 != nil {
if l1.Val > l2.Val {
pre.Next = l2
l2 = l2.Next
} else {
pre.Next = l1
l1 = l1.Next
}
pre = pre.Next
}
if l1 != nil {
pre.Next = l1
}
if l2 != nil {
pre.Next = l2
}
return res.Next
}