https://leetcode.com/problems/reverse-linked-list-ii/description/
给一个链表和一个区间m,n,要求反转区间内的链表
思路:头插法。先到达第m个结点,用pre记录前驱,cur表示反转后的链尾,move为cur的后继,表示要移动的结点。每次将move插到pre后面即可。
class Solution:
def reverseBetween(self, head, m, n):
"""
:type head: ListNode
:type m: int
:type n: int
:rtype: ListNode
"""
Head = ListNode(0)
Head.next = head
pre = Head
for _ in range(m-1): #到达第m个结点
pre = pre.next
cur = pre.next
for _ in range(n-m): #头插法
move = cur.next
cur.next = move.next
move.next = pre.next
pre.next = move
return Head.next