사용 언어: python 3.9.5
https://leetcode.com/problems/merge-two-sorted-lists/
각 연결 리스트마다 포인터를 하나씩 가진다.
예시) l1의 포인터는 l1_head, l2의 포인터는 l2_head
포인터의 값들을 비교하면서 더 작은 노드를 answer에 삽입한다.
fixed의 다음 노드부터 원소가 저장되었으므로, fixed.next를 반환한다.
# 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: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
l1_head = l1
l2_head = l2
fixed = ptr = ListNode()
while l1_head and l2_head:
if l1_head.val < l2_head.val:
ptr.next = ListNode(l1_head.val)
ptr = ptr.next
l1_head = l1_head.next
elif l1_head.val > l2_head.val:
ptr.next = ListNode(l2_head.val)
ptr = ptr.next
l2_head = l2_head.next
else:
ptr.next = ListNode(l1_head.val)
ptr = ptr.next
ptr.next = ListNode(l2_head.val)
ptr = ptr.next
l1_head, l2_head = l1_head.next, l2_head.next
while l1_head:
ptr.next = ListNode(l1_head.val)
ptr = ptr.next
l1_head = l1_head.next
while l2_head:
ptr.next = ListNode(l2_head.val)
ptr = ptr.next
l2_head = l2_head.next
return fixed.next
성공
1시간 이상
파이썬 얕은 복사와 깊은 복사에 대해 공부했다.
-> 파이썬 얕은 복사와 깊은 복사 정리한 내용
링크
접근법
코드