티스토리 뷰

안녕하세요. 죠쵸입니다.

LeetCode 24번 문제 풀이를 포스팅합니다. 해당 문제는 난위도 Medium에 해당합니다. 사용되는 자료구조는 Linked List 입니다.

 

#LeetCode 24. Swap Nodes in Pairs (Description)

 

간단히 문제를 설명 드리자면, 주어진 Linked List에서 홀수번째와 짝수번째 Node를 변경하는 것입니다. 쉬운 방법은 연결된 Link를 변경하지 않고, Node 안의 값만 변경하면 되지만, 값만 변경하여 풀이하는 것을 제한하고 있습니다. 아래의 그림을 참조 해 주세요. 

 

 

 

#LeetCode 24. Swap Nodes in Pairs (Solution)

 

비록 값만 바꾸는 것을 제한하고 있지만, 해당풀이를 제출했을 때 문제가 되지 않았습니다.

아래의 코드는 홀수 Node의 값과 짝수 Node의 값을 변경하는 코드입니다.

 

# Definition for singly-linked list.
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

    def _print_all(self):
        while self:
            print(self.val, end=' ')
            self = self.next

class Solution:
	def swapPairsValue(self, head: ListNode):
        firstNode = head

        while head and head.next:
            currentNode = head
            nextNode = currentNode.next
            currentNode.val, nextNode.val = nextNode.val, currentNode.val
            head = nextNode.next

        return firstNode

    def swapPairs(self, head: ListNode) -> ListNode:
       	return self.swapPairsValue(head)

 

 

아래의 풀이는 값을 변경하는 것이 아니라 Node의 연결자체를 변경하는 풀이입니다. 재귀함수를 사용하여 깔끔(?)하게 풀이하였습니다. 재귀함수의 경우, 종료조건을 유의하셔서 작성하셔야 정상적인 결과를 얻을 수 있습니다. 아래 풀이를 참조 해 주세요.

# Definition for singly-linked list.
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

    def _print_all(self):
        while self:
            print(self.val, end=' ')
            self = self.next

class Solution:
  	def swapPairsNodeRec(self, firstNode: ListNode)->ListNode:

        if not firstNode or not firstNode.next:
            return firstNode

        secondNode = firstNode.next
        firstNode.next = self.swapPairsNodeRec(secondNode.next)
        secondNode.next = firstNode

        return secondNode

    def swapPairs(self, head: ListNode) -> ListNode:
        return self.swapPairsNodeRec(head)

 

 

 

방문해 주셔서 감사합니다. 여러분의 공감하기(), 댓글과 구독은 저에게 힘이 됩니다.

이상으로 죠쵸였습니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함