본문 바로가기

카테고리 없음

Leetcode swap nodes in pairs

class ListNode:
    def __init__(self, v=0, next=None):
        self.v = v
        self.next = next

class Solution:
    def swapPairs(self, head: ListNode) -> ListNode:

        r = f = ListNode(None)
        f.next = head
        while head and head.next:
            str = head.next
            head.next = str.next
            str.next = head

            f.next = str
            head = head.next
            f = f.next.next

        return r.next

if __name__=="__main__":
    solution = Solution()
    head = ListNode(1,ListNode(2, ListNode(3, ListNode(4, None))))
    re = solution.swapPairs(head)
    go = re
    while go is not None:
        print(go.v, end = " ")
        go = go.next

문제

연결된 목록이 주어지면 인접한 두 노드 마다 교환하고 헤드를 반환한다. 목록 노드으ㅣ 값을 수정하지 않고 문제를 해결해야 한다.

 

풀이 방법

연결리스트를 파이썬리스트로 만들고 나서 해당 리스트의 인덱스를 1부터 2씩 증가시켜 스왑하는 방식으로 구현했다.

그리고 나서 스왑된 배열을 다시 배열리스트로 만들어 답을구했다.

 

느낀점

연결리스트를 자세하게 알게되었다.