'''
Description:
Autor: Au3C2
Date: 2021-03-18 13:01:04
LastEditors: Au3C2
LastEditTime: 2021-03-18 13:01:17
'''
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def reverseBetween(self, head: ListNode, left: int, right: int) -> ListNode:
if left == right or not head.next:
return head
node = TreeNode(0)
node.next = head
head = node
i = 0
ori_head = head
while i < left - 1: # 寻找 left - 1 节点
head = head.next
i += 1
last_node = head.next # 指向 left 节点
this_node = last_node.next # 指向 left + 1 节点
while i < right-1:
last_node.next = this_node.next
this_node.next = head.next
head.next = this_node
this_node = last_node.next
i += 1
return ori_head.next
# 链表,中等,每日一题
# https://leetcode-cn.com/problems/reverse-linked-list-ii/