题解 | #链表内指定区间反转#
链表内指定区间反转
https://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param head ListNode类
# @param m int整型
# @param n int整型
# @return ListNode类
#
class Solution:
def reverseBetween(self , head: ListNode, m: int, n: int):
head_0 = head
head__1 = ListNode(0)
head__1.next = head_0
head = head__1
for i in range(m-1):
head = head.next
# 1.遍历到第m-1个节点,2.保留m-1个节点的信息pre_0,3.记录下下一个节点的信息,4.滑动至下一个节点
pre_0 = head
next = head.next
head = next
# 1.保留该节点信息pre, 2.保留下一个节点的信息next,3.滑至下一个节点
pre = head
next = head.next
head = next
# 1.保留下一个节点的信息next,2.将该节点的next连接至上一个节点pre, 3.保留该节点的信息至pre,4.滑至下一个节点
for i in range(n-m):
next = head.next
head.next = pre
pre = head
head = next
# 1.保留下一个节点的信息next,2.将该节点的next连接至上一个节点pre, 3.保留该节点的信息至pre,4.滑至下一个节点
#……
# 1.遍历到第n个节点,2.保留下一个节点的信息next,3将该节点的next连接至上一个节点pre,4.保留该节点的信息至pre,5.将pre_0_next_next指向next,6.将pre_0_next指向pre. 7.结束。
pre_0.next.next = next
pre_0.next = pre
return head__1.next
