21. Merge Two Sorted Lists
# O(n) time || O(1) space
def merge_two_lists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
    sentinel = ListNode(-1)
    prev = sentinel
    curr1, curr2 = list1, list2
    while curr1 and curr2:
        if curr1.val <= curr2.val:
            prev.next, curr1 = curr1, curr1.next
        else:
            prev.next, curr2 = curr2, curr2.next
        prev = prev.next
    prev.next = curr1 or curr2
    return sentinel.next
use sentinel for result list. traverse both lists, compare which element is less. set as new node of sentinel list. do not forget to set the end of one of lists.