zoukankan      html  css  js  c++  java
  • Java实现 LeetCode 92 反转链表 II

    92. 反转链表 II

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

    说明:
    1 ≤ m ≤ n ≤ 链表长度。

    示例:

    输入: 1->2->3->4->5->NULL, m = 2, n = 4
    输出: 1->4->3->2->5->NULL
    通过次数33,953提交次数69,208

    PS:

    实现思路 :以1->2->3->4->5, m = 2, n=4 为例:

    定位到要反转部分的头节点 2,head = 2;前驱结点 1,pre = 1;
    当前节点的下一个节点3调整为前驱节点的下一个节点 1->3->2->4->5,
    当前结点仍为2, 前驱结点依然是1,重复上一步操作。。。
    1->4->3->2->5.

     
    
    
    class Solution {
       //以1->2->3->4->5, m = 2, n=4 为例:
        public ListNode reverseBetween(ListNode head, int m, int n) {
            ListNode dummy = new ListNode(0);
            dummy.next = head;
            ListNode pre = dummy;
            for(int i = 1; i < m; i++){
                pre = pre.next;
            }
            //pre为1  head为2
            head = pre.next;
            for(int i = m; i < n; i++){
                //nex为3
                ListNode nex = head.next;
                //head的下一个为3的下一个    head保存的是指到的坐标(交换到)
                head.next = nex.next;
                //nex的下一个就是1的下一个
                nex.next = pre.next;
                //pre的下一个就是1的下一个
                pre.next = nex;
            }
            return dummy.next;
        }
    }
    
  • 相关阅读:
    HDU 1010 Tempter of the Bone
    HDU 4421 Bit Magic(奇葩式解法)
    HDU 2614 Beat 深搜DFS
    HDU 1495 非常可乐 BFS 搜索
    Road to Cinema
    Sea Battle
    Interview with Oleg
    Spotlights
    Substring
    Dominating Patterns
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075575.html
Copyright © 2011-2022 走看看