- Reference
- ์๊ฐ๋ณต์ก๋: $O(N)$
- Runtime
39ms
- Beats
61.73%
Solution
# Definition for singly-linked list.
from typing import Optional
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution:
# list1์ ๋ ๋
ธ๋๋ฅผ ์์์ผ ๋จ (null์ผ ๋๊น์ง ์ด๋ํด์ผ ๋๋)
# ์ฒ์์ ํฌ์ธํฐ๊ฐ ๊ฐ๊ฐ ์ฒ์์ ๊ฐ๋ฆฌํค๊ฒ ํจ
# ์์ ๊ฐ์ ๋ด๊ณ ์๋ ๋
ธ๋๋ฅผ ์ถ๊ฐํ๊ณ , ํฌ์ธํฐ๋ฅผ ๋ค์ ๋
ธ๋๋ก ์ ์ง๋ํด
def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
# dummy: LinkedList์์ ์์ฃผ ์ฌ์ฉ๋จ (๊ฒฝ๊ณ ์กฐ๊ฑด์ ์ฒ๋ฆฌํ๋ ๋ฐ ํจ์ฌ ์์ํด์ง)
dummy = ListNode()
end = dummy
# Example 2, 3 ์ฒ๋ฆฌ
if list1 is None:
return list2
if list2 is None:
return list1
# ๋ ๋ค null์ด ์๋ ๋
while list1 is not None and list2 is not None:
if list1.val < list2.val:
end.next = list1 # list1์ด ๋ณํฉ๋ ๋ค์ ๋
ธ๋
list1 = list1.next # ๋ค์ ๋
ธ๋๋ก ํฌ์ธํฐ ์ด๋
else: # list.val >= list2.val
end.next = list2 # list2์ด ๋ณํฉ๋ ๋ค์ ๋
ธ๋
list2 = list2.next # ๋ค์ ๋
ธ๋๋ก ํฌ์ธํฐ ์ด๋
# ์
๋ฐ์ดํธ๋ฅผ ํด์ค์ผ ๋ณํฉ๋ ๊ฒ๋ ์ด๋ํด์ฃผ์ง
end = end.next
# while๋ฌธ์ ๋น ์ ธ๋์๋ค๋ ๊ฒ์ list1, list2 ๋ ์ค ํ๋๊ฐ null์ด๋ผ๋ ๊ฒ
# null์ด ์๋ ์ชฝ์ ์๋ list์ ๋จ์ ๋
ธ๋๋ฅผ ๋ณํฉ๋ ๊ฒ์ ์ถ๊ฐ
end.next = list1 or list2
# ์๋ ์ฝ๋๋ฅผ ์์ ์ฝ๋์ฒ๋ผ ์ค์ฌ ์ธ ์ ์์
# if list1:
# end.next = list1
# elif list2:
# end.next = list2
return dummy.next
Leave a comment