zoukankan      html  css  js  c++  java
  • 第92题:反转链表II

    一. 问题描述

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

    说明:

    1 ≤ m ≤ n ≤ 链表长度。

    示例:

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

    输出: 1->4->3->2->5->NULL

    二. 解题思路

    解题思路:利用链表性质进行求解,一次扫描。

    步骤一:找到m的边界,将m前面一个节点用first指向,m的第一个节点用temp指向,temp的下一个节点用data指向,data的下一个节点用result指向。

    步骤二:将data的下一个节点指向temp,然后将temp指向data,data指向result,

    Result指向result的下一个节点。

    步骤三:重复步骤二直到到达n的边界。

    步骤四:将m边界节点的第一个节点指向data,m边界前一个节点指向temp。

    三. 执行结果

    执行用时 :0 ms, 在所有 java 提交中击败了100.00%的用户

    内存消耗 :34.2 MB, 在所有 java 提交中击败了87.11%的用户

    四. Java代码

    class Solution {
        public ListNode reverseBetween(ListNode head, int m, int n) {
             if(m==n)
              {
                  return head;
              }else
              {
                  ListNode all=new ListNode(0);
                  all.next=head;
                  ListNode temp=all;
                  ListNode first=null;
                  for(int i=0;i<m&&temp!=null;i++)
                      {
                          first=temp;
                          temp=temp.next;
                      }
                  ListNode data=temp.next;
                  ListNode result=data.next;
                  for(int j=m;j<n;j++)
                      {
                         data.next=temp;
                         temp=data;
                         data=result;
                         if(result!=null)
                         result=result.next;
                      }
                      first.next.next=data;
                      first.next=temp;    
                      
                return all.next;
              }
        }
    }
  • 相关阅读:
    时间安排还是很不合理
    ZOJ Problem Set
    ZOJ Problem Set
    ZOJ Problem Set
    ZOJ Problem Set
    还是很水啊!!!
    pragma mark
    IOS应用发布NSLog的如何注释
    设定时间让应用从后台回来是否重新启动应用
    Mac 上SVN上传.a文件
  • 原文地址:https://www.cnblogs.com/xiaobaidashu/p/11759941.html
Copyright © 2011-2022 走看看