https://leetcode.com/problems/merge-two-sorted-lists/submissions/
LeetCode - The World's Leading Online Programming Learning Platform
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
문제 : 정렬되어 있는 두 연결 리스트를 합쳐라
입력 : 1->2->4, 1->3->4
출력 : 1 ->1->2->3->4->4
문제 해결 방법
1. 두 연결 리스트를 리스트로 변환 후 다시 연결리스트로 변환
class ListNode(object):
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution(object):
def mergeTwoLists(self, list1, list2):
result =[]
node = list1
#첫번째 연결 리스트 리스트로 변환
while node is not None:
result.append(node.val)
node =node.next
node2 = list2
#두번째 연결 리스트 리스트로 변환
while node2 is not None:
result.append(node2.val)
node2= node2.next
#리스트 정렬
result.sort()
#리스트에 들은 것이 있다면
if len(result)>0:
head = ListNode()
head.val = result[0]
current =head
for i in range(1,len(result)):
node = ListNode()
node.val = result[i]
current.next =node
current = current.next
else :
return None
return head
내가 처음에 오류가 났던 이유
1. 리스트에 들은 것이 없을 수도 있는데 할당해주려고 함 -> 할당할 수 없기 때문에 오류
#리스트에 들은 것이 있다면
if len(result)>0:
head = ListNode()
head.val = result[0]
current =head
for i in range(1,len(result)):
node = ListNode()
node.val = result[i]
current.next =node
current = current.next
사용된 개념
1. 리스트 -> 연결리스트
2. 연결리스트 -> 리스트
2. 재귀를 통한 병합
class Solution(object):
def mergeTwoLists(self, list1, list2):
if (not list) or (list2 and list1.val>list2.val):
list1 ,list2 = list2 ,list1
if list1:
list1.next = self.mergetTwoLists(list1.next,list2)
return list1
'코딩 > leetcode' 카테고리의 다른 글
[leetcode]2번 두 수의 덧셈, 파이썬 (0) | 2023.07.18 |
---|---|
[leetcode]206 연결리스트 뒤집기 (1) | 2023.07.16 |
[leetcode]234 팰린드롬 연결리스 (0) | 2023.07.16 |
[leetcode]238 자신을 제외한 배열의 곱 (0) | 2023.07.14 |
leetcode 42 , 빗물 트래킹 (0) | 2023.07.11 |