题解 | 链表内指定区间反转
链表内指定区间反转
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) -> ListNode: # write code here if not head or m >= n: return head # 创建一个哨兵节点,简化边界条件处理 dummy = ListNode(-1) dummy.next = head # 初始化前驱节点,用于最后连接反转部分的链表 pre = dummy # 移动到反转部分的前一个节点 for i in range(m - 1): pre = pre.next # 反转部分的第一个节点(即第 m 个节点) reverse_node = pre.next # 反转部分的当前节点(即第 m+1 个节点) cur = reverse_node.next # 进行链表反转 for i in range(n - m): temp = cur.next cur.next = reverse_node reverse_node = cur cur = temp # 将反转后的部分连接回原链表 pre.next.next = cur pre.next = reverse_node # 返回新的头节点 return dummy.next