본문 바로가기
Coding Test/LeetCode

[LeetCode] 24. Swap Nodes in Pairs [Python(파이썬)]

'파이썬 알고리즘 인터뷰'를 보고 작성한 글입니다. 😀
문제 👉 <Swap Nodes in Pairs - LeetCode>

1. 문제 (페어의 노드 스왑)

연결 리스트를 입력받아 페어(pair) 단위로 스왑하라.

2. 풀이

  1. 반복문을 이용한 풀이
  2. 재귀를 이용한 풀이

3. 코드

  • 반복을 이용한 풀이
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def swapPairs(self, head: ListNode) -> ListNode:
        if not head or not head.next:
            return head

        root = pre = ListNode(0)

        while head and head.next: # (1->2->3)
            temp = head.next
            # swap (1->2 => 2->1)
            head.next, temp.next = temp.next, head
            # pre (0->2->1)
            pre.next = temp
            # head (3) pre (1)
            head, pre = head.next, pre.next.next

        return root.next
  • 재귀를 이용한 풀이
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def swapPairs(self, head: ListNode) -> ListNode:
        if head and head.next: # (1->2->3->4)
            node = head.next # node (2)
            node.next, head = head, node.next # head (2->1)
            node.next.next = self.swapPairs(head) # node (1->4->3)
            return node
        return head
  • 결과 :
방식 Status Runtime Memory Language
반복문 [Accepted] 32 ms 14.2 MB python3
재귀 [Accepted] 32 ms 14.1 MB python


References


🏋🏻 개인적으로 공부한 내용을 기록하고 있습니다.
잘못된 부분이 있다면 과감하게 지적해주세요!! 🏋

댓글