package top100liked import ( "fmt" "testing" ) // https://leetcode.cn/problems/merge-two-sorted-lists/description/?envType=study-plan-v2&envId=top-100-liked type ListNode struct { Val int Next *ListNode } func mergeTwoLists(list1 *ListNode, list2 *ListNode) *ListNode { p1, p2 := list1, list2 p := &ListNode{} res := p for p1 != nil && p2 != nil { if p1.Val <= p2.Val { p.Next = p1 p = p.Next p1 = p1.Next } else { p.Next = p2 p = p.Next p2 = p2.Next } } for p1 != nil { p.Next = p1 p = p.Next p1 = p1.Next } for p2 != nil { p.Next = p2 p = p.Next p2 = p2.Next } return res.Next } func Test(t *testing.T) { input1 := &ListNode{ Val: -9, Next: &ListNode{ Val: 3, Next: nil, }, } input2 := &ListNode{ Val: 5, Next: &ListNode{ Val: 7, Next: nil, }, } output := mergeTwoLists(input1, input2) for output != nil { fmt.Println(output.Val) output = output.Next } }