剑指Offer25. 合并两个排序的链表Golang版
1. 问题描述
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
示例1:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
限制:
0 <= 链表长度 <= 1000
2. 思路
每次取两个链表中较小的那个数,链接到新链表,直到其中一个链表为空。再把另一个链表链接到新链表上。
3. 代码
要点:注意伪头节点l3的声明
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {
var l3 *ListNode = &ListNode{}
p1 := l1
p2 := l2
p3 := l3
for p1 != nil && p2 != nil {
if p1.Val <= p2.Val {
fmt.Println(p1.Val)
p3.Next = p1
p1 = p1.Next
} else {
p3.Next = p2
p2 = p2.Next
}
p3 = p3.Next
}
if p1 != nil {
p3.Next = p1
}
if p2 != nil {
p3.Next = p2
}
return l3.Next
}