Leetcode 92. 反转链表 II(Python3)

92. 反转链表 II

反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。

说明:
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':
        dummy = ListNode(None)
        dummy.next = head
        h = dummy
        for _ in range(m-1):
            h = h.next
        #l从第m个节点开始
        l = h.next
        r = l.next
        #反转左右两个节点的链接,左右两个节点继续前进
        for _ in range(n-m):
            r.next,l,r = l,r,r.next
        #处理两个边界节点
        h.next.next,h.next = r,l
        return dummy.next

相关题目:

206. 反转链表

猜你喜欢

转载自blog.csdn.net/qq_38575545/article/details/87900792