File tree Expand file tree Collapse file tree 1 file changed +62
-0
lines changed Expand file tree Collapse file tree 1 file changed +62
-0
lines changed Original file line number Diff line number Diff line change 1+ from typing import Optional
2+
3+ # Definition for singly-linked list.
4+ class ListNode :
5+ def __init__ (self , val = 0 , next = None ):
6+ self .val = val
7+ self .next = next
8+
9+ class Solution :
10+ """
11+ - Time Complexity: O(n + m), n = len(list1), m = len(list2)
12+ - Space Complexity: O(1)
13+ """
14+ def mergeTwoLists (self , list1 : Optional [ListNode ], list2 : Optional [ListNode ]) -> Optional [ListNode ]:
15+ # two pointers
16+ p1 , p2 = list1 , list2
17+ dummy = ListNode (0 )
18+ current = dummy
19+
20+ while p1 and p2 :
21+ if p1 .val < p2 .val :
22+ current .next = p1
23+ p1 = p1 .next
24+ else :
25+ current .next = p2
26+ p2 = p2 .next
27+ current = current .next
28+
29+ current .next = p1 if p1 else p2
30+
31+ return dummy .next
32+
33+ def printList (list ):
34+ if not list :
35+ print ("[]" )
36+ return
37+
38+ str_list = []
39+ while list :
40+ str_list .append (str (list .val ))
41+ list = list .next
42+ print ("[" + ", " .join (str_list ) + "]" )
43+
44+ def doTest ():
45+ sol = Solution ()
46+
47+ list1 = ListNode (1 )
48+ list1 .next = ListNode (2 )
49+ list1 .next .next = ListNode (4 )
50+ list2 = ListNode (1 )
51+ list2 .next = ListNode (3 )
52+ list2 .next .next = ListNode (4 )
53+ result1 = sol .mergeTwoLists (list1 , list2 )
54+ printList (result1 )
55+
56+ result2 = sol .mergeTwoLists (None , None )
57+ printList (result2 )
58+
59+ result3 = sol .mergeTwoLists (None , ListNode (0 ))
60+ printList (result3 )
61+
62+ doTest ()
You can’t perform that action at this time.
0 commit comments