zoukankan      html  css  js  c++  java
  • leetcode------Reverse Linked List II

    标题: Reverse Linked List II
    通过率: 26.2%
    难度: 中等

    Reverse a linked list from position m to n. Do it in-place and in one-pass.

    For example:
    Given 1->2->3->4->5->NULLm = 2 and n = 4,

    return 1->4->3->2->5->NULL.

    Note:
    Given mn satisfy the following condition:
    1 ≤ m ≤ n ≤ length of list.

    单链表的逆序,遍历一遍全部逆序完成,本题不是全部逆序,是部分逆序。只用记录逆序开始点和结束点即可逆序过程如下图:

    初始状态:

    head->next = prev;

    prev = head;

    head = next;

    next = head->next

    第一次结束,如上图。

    整个过程是一个循环的过程,如下图:

    具体代码如下:

     1 class Solution:
     2     def reverseBetween(self, head, m, n):
     3         diff, dummy, current= n - m, ListNode(0), head
     4         dummy.next = head
     5         last_unswapped = dummy
     6         while current != None and m > 1:
     7             current, last_unswapped, m = current.next, current, m - 1
     8         prev, first_swapped = last_unswapped, current
     9         while current != None and diff >= 0:
    10             tmp = current.next
    11             current.next = prev
    12             prev = current
    13             current = tmp
    14             diff -= 1
    15         last_unswapped.next, first_swapped.next = prev, current
    16         return dummy.next
  • 相关阅读:
    DailyRollingFileAppender的使用
    CSS自动换行
    MAC与WIN10电脑共享文件
    C++常用STL
    Python机器学习及实践 课后小题
    Mac上利用VScode配置c/c++开发环境
    pycharm+anaconda在Mac上的配置方法 2019.11.29
    二分查找 python实现
    python3相关
    算法图解 各部分回忆
  • 原文地址:https://www.cnblogs.com/pkuYang/p/4421520.html
Copyright © 2011-2022 走看看