해당 내용은 ‘파이썬 알고리즘 인터뷰’ 책의 일부를 발췌하여 정리한 내용입니다.

역순 연결리스트 ll

주어진 인덱스 구간 사이를 역순으로 정렬하라.

Input: head = [1,2,3,4,5], left = 2, right = 4
Output: [1,4,3,2,5]

풀이 : 반복 구조로 노드 뒤집기

class Solution:
    def reverseBetween(self, head: Optional[ListNode], left: int, right: int) -> Optional[ListNode]:

        # 예외처리를 위한 구문
        if not head or left == right:
            return head

        # 루트값과 시작점 설정
        root = start = ListNode(None)
        root.next = head

        # 시작값과 끝값 설정
        for _ in range(left - 1):
            start = start.next
        end = start.next

        for _ in range(right - left):
            tmp, start.next, end.next = start.next, end.next, end.next.next
            start.next.next = tmp

        return root.next