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

    题目链接

    题目大意:翻转链表中从m到n的结点,其他位置保持不变。

    法一:与61类似,只是61是轮询翻转,而这题是抽一部分翻转,所以可以将链表分成三部分,前面,中间,后面,对前面和后面只需要遍历即可,对中间则进行翻转。代码如下(耗时4ms):

     1     public ListNode reverseBetween(ListNode head, int m, int n) {
     2         ListNode pre = null, res = head;
     3         //找到前面的最末位节点
     4         for(int i = 1; i < m; i++) {
     5             if(pre == null) {
     6                 pre = head;
     7                 res = pre;
     8             }
     9             else {
    10                 pre.next = head;
    11                 pre = head;
    12             }
    13             head = head.next;
    14         }
    15         //处理中间节点
    16         ListNode mi = null, miPost = mi;
    17         for(int i = m; i <= n; i++) {
    18             if(mi == null) {
    19                 mi = head;
    20                 miPost = mi;
    21                 head = head.next;
    22             }
    23             else {
    24                 ListNode tmp = head;
    25                 head = head.next;
    26                 tmp.next = mi;
    27                 mi = tmp;
    28             }
    29         }
    30         if(pre != null) {
    31             //前面连接中间
    32             pre.next = mi;
    33             //中间连接后面
    34             miPost.next = head;
    35         }
    36         else {
    37             res = mi;
    38             miPost.next = head;
    39         }
    40         return res;
    41     }
    View Code
  • 相关阅读:
    项目纪实一
    Quartz.net一个简要示例
    ASP.NET MVC4 WebAPI若干要点
    利用委托实现父控件与子控件之间消息传递
    js获取屏幕信息
    jsion大括号和中括号,及调用
    jquery解析jsion
    hibernate初步
    java web笔记
    mysql存储过程
  • 原文地址:https://www.cnblogs.com/cing/p/9124766.html
Copyright © 2011-2022 走看看