[アルゴリズム]逆順接続リストII


逆順接続リストII

本を解く

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

class Solution:
    def reverseBetween(self, head: ListNode, m: int, n: int) -> ListNode:
        if not head or m==n:
            return head

        root = start = ListNode(None)
        root.next= head
        # start, end 지정
        for _ in range(m-1):
            start = start.next
        end = start.next

        # 반복하면서 노드 차례대로 뒤집기
        for _ in range(n - m):
            tmp = start.next
            start.next = end.next
            end.next = end.next.next
            start.next.next = tmp

        return root.next
リストに必要な部分だけを作って、リストに基づいてリンクリストを作成することができますが、これは定式解ではないので、本の中の解を参考にしました.重要なのは、本の絵を通じてどのように行うかを理解することです.