zoukankan      html  css  js  c++  java
  • [leedcode 92] Reverse Linked List II

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

    For example:
    Given 1->2->3->4->5->NULLm = 2 and n = 4,

    return 1->4->3->2->5->NULL.

    Note:
    Given mn satisfy the following condition:
    1 ≤ m ≤ n ≤ length of list.

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    public class Solution {
        public ListNode reverseBetween(ListNode head, int m, int n) {
            /*The idea is stright forward. There needs an safe head guard.
    
            1 calculate the number that needs to reverse 
    
            2 find the start position to reverse.
    
            3. iterative reverse two node(Use two pointer)*/
            ListNode newHead=new ListNode(-1);//安全头节点
            newHead.next=head;
            ListNode p1=head;
            ListNode last=newHead;
            int t=n-m;
            while(m>1){
                p1=p1.next;
                last=last.next;
                m--;
            }
            ListNode rear=last;
            ListNode temp=p1;
                p1=p1.next;
                last=last.next;
            ListNode p2=p1;
            
            while(t>0){
                p2=p1.next;
                p1.next=last;
                last=p1;
                p1=p2;
                t--;
            }
            rear.next=last;
            temp.next=p1;
            return newHead.next;
        }
    }
  • 相关阅读:
    [NOI2019] 回家路线
    [NOIP2016] 天天爱跑步
    [CF1187D] Subarray Sorting
    [THUPC2018] 弗雷兹的玩具商店
    [AGC006C] Rabbit Exercise
    [AGC005F] Many Easy Problems
    [51Nod2558] 选址
    [BZOJ3771] Triple
    [APIO2019] 奇怪装置
    [CTSC2018] 假面
  • 原文地址:https://www.cnblogs.com/qiaomu/p/4651564.html
Copyright © 2011-2022 走看看