Skip to content

Commit ede4dae

Browse files
committed
[7th batch] week 4 - merge two sorted lists
1 parent 08a7d6c commit ede4dae

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

โ€Žmerge-two-sorted-lists/liza0525.pyโ€Ž

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,40 @@ def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) ->
4141

4242
# dummy ๋…ธ๋“œ ๋‹ค์Œ๋ถ€ํ„ฐ๊ฐ€ ์‹ค์ œ ๋จธ์ง€๋œ ๋ฆฌ์ŠคํŠธ์˜ ์‹œ์ž‘์ 
4343
return root_node.next
44+
45+
46+
# 7๊ธฐ ํ’€์ด
47+
# ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n + m)
48+
# - list1์˜ ๊ธธ์ด n, list2์˜ ๊ธธ์ด m์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ํƒ์ƒ‰ํ•  ๋•Œ ์ตœ์•…
49+
# ๊ณต๊ฐ„ ๋ณต์žก๋„: O(1)
50+
# - dummy ๋…ธ๋“œ์™€ curr ๋งŒ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ถ”๊ฐ€ ๊ณต๊ฐ„ ์—†์Œ
51+
class Solution:
52+
def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
53+
dummy = ListNode() # dummy node๋ฅผ ๋งŒ๋“ค์–ด dummy.next๋ถ€ํ„ฐ ๋ฆฌ์ŠคํŠธ๋“ค์„ ๋จธ์ง€ํ•˜๋„๋ก ํ•œ๋‹ค.
54+
curr = dummy # curr ํฌ์ธํŠธ๋ฅผ dummy์— ๋‘”๋‹ค
55+
56+
# list1๊ณผ list2 ๋ชจ๋‘๊ฐ€ ์žˆ์„ ๋•Œ ๋ฃจํ”„๋ฅผ ๋ˆ๋‹ค.
57+
# ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ผ๋„ None์ด ๋˜๋Š” ์ˆœ๊ฐ„ ๋ฃจํ”„ ํƒˆ์ถœ
58+
while list1 and list2:
59+
if list1.val < list2.val:
60+
# list1์˜ ์ˆซ์ž๊ฐ€ ๋” ์ž‘์„ ๋• curr.next์— list1์˜ ํ—ค๋“œ๋ฅผ ๋„ฃ๊ณ ,
61+
# ํฌ์ธํ„ฐ๋ฅผ next node๋กœ ์˜ฎ๊น€
62+
curr.next = list1
63+
list1 = list1.next
64+
else:
65+
# list2์˜ ์ˆซ์ž๊ฐ€ ๋” ์ž‘์„ ๋• curr.next์— list2์˜ ํ—ค๋“œ๋ฅผ ๋„ฃ๊ณ ,
66+
# ํฌ์ธํ„ฐ๋ฅผ next node๋กœ ์˜ฎ๊น€
67+
curr.next = list2
68+
list2 = list2.next
69+
70+
# ๋‹ค์Œ ๋…ธ๋“œ merge๋ฅผ ์œ„ํ•ด curr๋„ ํฌ์ธํ„ฐ๋ฅผ next๋กœ ๋ณ€๊ฒฝ
71+
curr = curr.next
72+
73+
# ๋ฃจํ”„ ํƒˆ์ถœ ํ›„ ๋‚จ์•„ ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ๊ฐ€ ์žˆ๋‹ค๋ฉด curr์˜ next์— ๋‚จ์€ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋จธ์ง€ํ•œ๋‹ค.
74+
if list1:
75+
curr.next = list1
76+
elif list2:
77+
curr.next = list2
78+
79+
# dummy ๋…ธ๋“œ๋Š” ์˜ˆ๋น„์šฉ, dummy.next๋ฅผ ๋ฆฌํ„ด
80+
return dummy.next

0 commit comments

Comments
ย (0)