두 Sorted Linked List 를 합치는 문제이다.
이미 각각 정렬이 되어 있으므로 처음 값부터 두 리스트 값을 비교해가며 작은 수부터 채워나가면 된다.
시행착오가 조금 있었던 부분
- temp.next = l2 ## temp 리스트의 next에 l2 연결
- temp = temp.next ## temp 한칸 이동!!
- temp.val = l2.val ## l2값 대입
- l2.next ## l2 한칸 이동
temp 값을 넣고 한칸 이동해야된다는 사실을 망각했다.
그래도 처음보다 Linked List에 익숙해진 것 같아서 뿌듯하다.
소스 코드
# 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, l1: ListNode, l2: ListNode) -> ListNode:
temp = ListNode()
head = temp
while True:
if l1 == None and l2 == None:
break
elif l1 == None:
temp.next = l2
temp = temp.next
temp.val = l2.val
l2 = l2.next
elif l2 == None:
temp.next = l1
temp = temp.next
temp.val = l1.val
l1 = l1.next
else:
if l1.val >= l2.val:
temp.next = l2
temp = temp.next
temp.val = l2.val
l2 = l2.next
elif l1.val < l2.val:
temp.next = l1
temp = temp.next
temp.val = l1.val
l1 = l1.next
return head.next
'Leetcode Top 100' 카테고리의 다른 글
23. Merge k Sorted Lists (0) | 2021.01.19 |
---|---|
22. Generate Parentheses (0) | 2021.01.18 |
20. Valid Parentheses (0) | 2021.01.18 |
19. Remove Nth Node From End of List (0) | 2021.01.12 |
17. Letter Combinations of a Phone Number (0) | 2021.01.11 |