剑指Offer 25. 合并两个排序的链表

发布时间 2023-08-27 16:26:36作者: 小星code

题目链接: 剑指Offer 25. 合并两个排序的链表

题目描述:

输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。

解法思路:

在两链表向后遍历的过程中,哪个更小一点,哪个先放在合并后的链表中。最后哪个链表剩余,直接接在合并链表的后面即可。

代码:

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {

    dummy := &ListNode{}
    
    p := dummy
    for l1 != nil && l2 != nil {
        if l1.Val < l2.Val{
            p.Next = l1
            l1 = l1.Next
            p = p.Next
        }else{
            p.Next = l2
            l2 = l2.Next
            p = p.Next
        }
    }
    if l1 != nil {
        p.Next = l1
    }
    if l2 != nil {
        p.Next = l2
    }
    return dummy.Next
}