24. Swap Nodes in Pairs

kukudas·2022년 3월 14일
0

Algorithm

목록 보기
15/46

1. 그냥 값만 바꿈

# 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: Optional[ListNode]) -> Optional[ListNode]:
        node = head

        while node and node.next:
            node.val, node.next.val = node.next.val, node.val
            node = node.next.next

        return head  

2. 연결리스트의 연결을 바꿈

# 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: Optional[ListNode]) -> Optional[ListNode]:
        root = prev = ListNode(None)
        prev.next = head

        while head and head.next:
            next = head.next
            head.next = next.next
            next.next = head

            prev.next = next

            # head의 next는 다다음으로 바뀌었으니 하나만 이동하면됨.
            head = head.next
            # 처음 prev는 none이니 다다음으로 가야함 짝수단위로 가야함.
            prev = prev.next.next

        return root.next

[문제]
https://leetcode.com/problems/swap-nodes-in-pairs/submissions/

0개의 댓글