zoukankan      html  css  js  c++  java
  • Leetcode#92 Reverse Linked List II

    原题地址

    第一步,找到将要翻转的位置,记录翻转部分前一个节点(prev)

    第二步,翻转,记录翻转完成后这部分的首(reverseHead)和尾(reverseTail),以及翻转部分之后的一个节点(post)

    第三部,将prev、reverseHead、reverseTail、post连接起来

    代码:

     1 ListNode *reverseBetween(ListNode *head, int m, int n) {
     2         ListNode *node = head;
     3         ListNode *prev = NULL;
     4         ListNode *post = NULL;
     5         ListNode *reverseHead = NULL;
     6         ListNode *reverseTail = NULL;
     7         int count = 1;
     8         
     9         if (!head)
    10             return NULL;
    11         
    12         prev = NULL;
    13         while (node && count < m ) {
    14             prev = node;
    15             node = node->next;
    16             count++;
    17         }
    18         
    19         if (!node)
    20             return head;
    21         
    22         reverseTail = node;
    23         post = node->next;
    24         while (post && count < n) {
    25             ListNode *postNext = post->next;
    26             post->next = node;
    27             node = post;
    28             post = postNext;
    29             count++;
    30         }
    31         reverseHead = node;
    32         reverseTail->next = post;
    33         
    34         if (!prev)
    35             return reverseHead;
    36         else {
    37             prev->next = reverseHead;
    38             return head;
    39         }
    40 }
  • 相关阅读:
    Java 设计模式之单例
    CentOS 下安装配置Hadoop
    Linux 修改IP地址和DNS
    Hibernate 主配置文件详解
    HTTP 协议细节
    Java 设计模式之工厂
    mysqldump备份与还原
    [小技巧]windows时间同步
    关于反射
    XHTML、DTD和Web Services
  • 原文地址:https://www.cnblogs.com/boring09/p/4259683.html
Copyright © 2011-2022 走看看