zoukankan      html  css  js  c++  java
  • [leetcode]92. Reverse Linked List II反转链表2

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

    Note: 1 ≤ m ≤ n ≤ length of list.

    Example:

    Input: 1->2->3->4->5->NULL, m = 2, n = 4
    Output: 1->4->3->2->5->NULL

    题意:

    给定一个链表,反转第m~n个节点。

    反转链表的一般思路

    Solution1:

    1.用指针找到m和n位置

    2.反转m和n之间的链表

    code

     1 class Solution {
     2     public ListNode reverseBetween(ListNode head, int m, int n) {
     3          if(head==null) return head;
     4 
     5         ListNode dummy = new ListNode(-1);
     6 
     7         dummy.next = head;
     8 
     9         ListNode mNode = head;
    10         ListNode preM = dummy;
    11         ListNode nNode = head;
    12 
    13         for (int i = 1; i < m ; i++) {
    14             preM = mNode;
    15             mNode = mNode.next;
    16         }
    17 
    18         for (int i = 1; i <n ; i++) {
    19             nNode = nNode.next;
    20         }
    21 
    22         while(mNode != nNode){
    23             preM.next = mNode.next;
    24             mNode.next = nNode.next;
    25             nNode.next = mNode;
    26             mNode = preM.next;    
    27         }
    28         return dummy.next;   
    29     }
    30 }
  • 相关阅读:
    Python学习笔记(三)
    Python学习笔记(二)
    GDUFE ACM1159
    GDUEFE ACM1003 练手
    GDUFE ACM1033
    GDUFE ACM1128
    GDUFE ACM1002
    EDUFE ACM1050
    GDUFE ACM1007
    GDUFE ACM1003
  • 原文地址:https://www.cnblogs.com/liuliu5151/p/10735642.html
Copyright © 2011-2022 走看看