每日一题力扣92

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

class Solution:
    def reverseBetween(self, head: ListNode, m: int, n: int) -> ListNode:
        if m == n:
            return head
        dummy = ListNode(-1)
        dummy.next = head

        a, d = dummy, dummy
        for _ in range(m - 1):
            a = a.next#找到第m个的钱一个节点,要把前一个节点换链接
        for _ in range(n):
            d = d.next#找到第n个节点,要把第n个节点换链接
        b, c = a.next, d.next#b就是第m个节点,c就是n个节点的下一个节点
        pre = b
        cur = pre.next
        while cur != c:
            next = cur.next
            cur.next = pre
            pre = cur
            cur = next
        a.next = d
        b.next = c
        return dummy.next

 

posted @ 2021-03-14 14:03  小千北同学超爱写代码  阅读(72)  评论(0编辑  收藏  举报