Given the heads of two singly linked lists, each sorted in non-decreasing order, merge them into a single sorted linked list by rearranging their nodes. Return the head of the merged linked list.
Example 1
Input: head_a = ListNode(2, ListNode(5, ListNode(7))) head_b = ListNode(1, ListNode(3, ListNode(8)))
Output: [1,2,3,5,7,8]
Explanation: Merged list contains all elements from both lists in sorted order.
Example 2
Input: head_a = None head_b = ListNode(4, ListNode(6))
Output: [4,6]
Explanation: One list is empty; merged list is the other list.
Example 3
Input: head_a = ListNode(-2, ListNode(0)) head_b = ListNode(-3, ListNode(1))
Output: [-3,-2,0,1]
Explanation: Negative and positive values are merged in order.
Constraints
Case 1
Input: head_a = ListNode(10) head_b = ListNode(5, ListNode(15))
Expected: [5,10,15]
Case 2
Input: head_a = None head_b = None
Expected: []
Case 3
Input: head_a = ListNode(-1, ListNode(0, ListNode(2))) head_b = ListNode(-2, ListNode(3))
Expected: [-2,-1,0,2,3]
Case 4
Input: head_a = ListNode(1, ListNode(2, ListNode(2))) head_b = ListNode(2, ListNode(2, ListNode(3)))
Expected: [1,2,2,2,2,3]