21. Merge Two Sorted Lists

You are given the heads of two sorted linked lists list1 and list2.

Merge the two lists in a one sorted list. The list should be made by splicing together the nodes of the first two lists.

Return the head of the merged linked list.

class Solution: 
    def mergeTwoLists(self, l1, l2): 
        # maintain an unchanging reference to node ahead of the return node. 
        prehead = ListNode(-1) 
        prev = prehead 
        while l1 and l2: 
            if l1.val <= l2.val: 
                prev.next = l1 
                l1 = l1.next 
            else: 
                prev.next = l2 
                l2 = l2.next             
            prev = prev.next 
        # exactly one of l1 and l2 can be non-null at this point, so connect 
        # the non-null list to the end of the merged list. 
        prev.next = l1 if l1 is not None else l2 
        return prehead.next