zoukankan      html  css  js  c++  java
  • LeetCode 92. 反转链表 II

    92. 反转链表 II

    Difficulty: 中等

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

    说明:
    1 ≤ m ≤ n ≤ 链表长度。

    示例:

    输入: 1->2->3->4->5->NULL, m = 2, n = 4
    输出: 1->4->3->2->5->NULL
    

    Solution

    这个题目是反转链表的变种,只不过本题的要求是对链表中间的一部分反转,其余的部分保持原样不变,对链表做原地(in-place)操作比较复杂,我们可以对中间那部分需要反转的链表单独拿出来,然后再接到原来的链表上,这样理解比较简单。

    # 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:
            if not head: return None
            res = ListNode(-1)
            pre = res
            mid, i, j = None, 0, 0
            
            while head and j < n:
                cur = head.val
                curNode = ListNode(cur)
                if i < m - 1:
                    pre.next = head
                    pre = pre.next
                    i += 1
                else:
                    curNode.next = mid
                    mid = curNode
                head = head.next
                j += 1
            while mid:
                pre.next = mid
                mid = mid.next
                pre = pre.next
            pre.next = head
            return res.next
    

    解法二:此解法可以在LeetCode 143. 重排链表 - swordspoet - 博客园一题中得到应用。

    class Solution:
        def reverseBetween(self, head: ListNode, m: int, n: int) -> ListNode:
            if not head or m == n: return head
            res = pre = ListNode(-1)
            res.next = head
            for _ in range(m-1):
                pre = pre.next
            
            rest = pre.next
            for _ in range(n-m):
                cur = rest.next
                rest.next = cur.next
                cur.next = pre.next
                pre.next = cur
            return res.next
    
  • 相关阅读:
    NIO(二)
    前端面试题整理及答案
    win10休眠后屏幕唤不醒
    Python 将多个列表相同索引的元素进行拼接并输出
    Airtest 常用方法
    windows 各种巨强工具包
    mysql 主从数据同步配置
    windows 10 21H1 顶部任务栏点击音量或其他图标不出弹框
    html5 tts(文字朗读)
    为 map 中不存在的 key 提供缺省值
  • 原文地址:https://www.cnblogs.com/swordspoet/p/14162994.html
Copyright © 2011-2022 走看看