Given the heads of two singly linked lists list1 and list2, where each list is sorted in non-decreasing order, merge them into a single sorted linked list and return its head. The merged list should be built by reusing the existing nodes, not by creating a separate list of values.
Example 1:
Input: list1 = [1,2,4], list2 = [1,3,4]
Output: [1,1,2,3,4,4]
Explanation: Repeatedly take the smaller current node from the two lists.
Example 2:
Input: list1 = [], list2 = [0]
Output: [0]
Explanation: If one list is empty, the result is the other list.
0 <= number of nodes in each list <= 50-100 <= Node.val <= 100list1 and list2 are sorted in non-decreasing order