→ 두 연결 리스트를 정렬하여 합치기
→ 예시
Input: list1 = [1,2,4], list2 = [1,3,4]
Output: [1,1,2,3,4,4]
→ 리스트화 - 리스트 합치기 - sort - 연결리스트 변환
# Definition for singly-linked list.
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class LinkedList:
def __init__(self):
self.head = None
def append(self, val):
if not self.head:
self.head = ListNode(val, None)
return
node = self.head
while node.next:
node = node.next
node.next = ListNode(val, None)
class Solution:
def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
a# 배열 생성
arr = []
# 연결리스트 -> 리스트화
# 첫번째 연결리스트 arr에 넣기
node1 = head1
while node1:
arr.append(node1.val)
node1 = node1.next
# 두번째 연결리스트 arr 에 넣기
node2 = head2
while node2:
arr.append(node2.val)
node2 = node2.next
# 리스트 오름차순 정렬
arr.sort()
# 최종 결과 연결리스트 생성
result_li = LinkedList()
# 연결리스트에 하나씩 넣기
for num in arr:
result_li.append(num)
return result_li.head
통과는 했는데 알고리즘이 너무 원시적인것 같다.
연결리스트를 리스트화 했다가 리스트를 다시 연결리스트화 하는것은 연결리스트의 삭제 수정이 용이한 장점을 파고들지 못한것 같다.
변수를 스왑해가면서 값들을 엮어나간다.