版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_36811967/article/details/88235742
说明:
1 ≤ m ≤ n ≤ 链表长度。
示例:
输入: 1->2->3->4->5->NULL, m = 2, n = 4
输出: 1->4->3->2->5->NULL
建立一个头结点可以省去很多事:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def reverseBetween(self, head: ListNode, m: int, n: int) -> ListNode:
res = ListNode(0)
res.next = head
before = res # 反转的前一个节点
for i in range(m-1):
before = before.next
a = before.next
b = a.next
while m < n: # 把b放到翻转的最前面
a.next = b.next
b.next = before.next
before.next = b
b = a.next
m += 1
return res.next