|
@@ -1,12 +1,22 @@
|
|
|
from typing import Optional
|
|
|
-from utils import ListNode
|
|
|
+from utils import ListNode, arr_to_linklist, linkList_to_arr
|
|
|
+import pytest
|
|
|
|
|
|
|
|
|
class Solution:
|
|
|
def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
|
|
|
# 递归
|
|
|
- list3 = ListNode()
|
|
|
- head = list3
|
|
|
+ if not list1:
|
|
|
+ return list2
|
|
|
+ elif not list2:
|
|
|
+ return list1
|
|
|
+ elif list1.val <= list2.val:
|
|
|
+ list1.next = self.mergeTwoLists(list1.next, list2)
|
|
|
+ return list1
|
|
|
+ else:
|
|
|
+ list2.next = self.mergeTwoLists(list2.next, list1)
|
|
|
+ return list2
|
|
|
+
|
|
|
|
|
|
# 非递归
|
|
|
# list3 = ListNode()
|
|
@@ -23,11 +33,10 @@ class Solution:
|
|
|
# pre.next = list1 if list1 else list2
|
|
|
# return list3.next
|
|
|
|
|
|
-# if __name__ == "__main__":
|
|
|
-# s = Solution()
|
|
|
-# l1 = arr_to_linklist([1, 2, 4])
|
|
|
-# l2 = arr_to_linklist([1, 3, 4])
|
|
|
-# l3 = s.mergeTwoLists(l1, l2)
|
|
|
-# res = linkList_to_arr(l3)
|
|
|
-# print(res)
|
|
|
-# assert res == [1,1,2,3,4,4]
|
|
|
+if __name__ == "__main__":
|
|
|
+ s = Solution()
|
|
|
+ list1 = arr_to_linklist([1, 2, 4])
|
|
|
+ list2 = arr_to_linklist([1, 3, 4])
|
|
|
+ res = s.mergeTwoLists(list1, list2)
|
|
|
+ res = linkList_to_arr(res)
|
|
|
+ assert res == [1,1,2,3,4,4]
|