###### tags: `Linked List`, `Recursion` # LeetCode 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. ![圖片名稱](https://assets.leetcode.com/uploads/2020/10/03/merge_ex1.jpg) >Example 1: ``` Input: list1 = [1,2,4], list2 = [1,3,4] Output: [1,1,2,3,4,4] ``` >Example 2: ``` Input: list1 = [], list2 = [] Output: [] ``` >Example 3: ``` Input: list1 = [], list2 = [0] Output: [0] ``` ### Constraints: - The number of nodes in both lists is in the range ```[0, 50]```. - $-100 <= Node.val <= 100$ - Both ```list1``` and ```list2``` are sorted in non-decreasing order. --- ### Idea: > ### Solution: Python: ```python= # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]: merge = ListNode() cursor = merge while list1 and list2: if list1.val <= list2.val: cursor.next = list1 list1 = list1.next else: cursor.next = list2 list2 = list2.next cursor=cursor.next if list1: cursor.next = list1 else: cursor.next = list2 return merge.next ``` C++ ```cpp= ```