zoukankan      html  css  js  c++  java
  • 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.

     ref: http://www.cnblogs.com/feiling/p/3263501.html

    添加一个safeguard,防止处理m=1的情况,用p1, p2, p3记录m-1, m, n这几个节点的引用

    当处理到m+1~n这些节点时将,将它们的next指向前一个节点

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) {
     *         val = x;
     *         next = null;
     *     }
     * }
     */
    public class Solution {
        public ListNode reverseBetween(ListNode head, int m, int n) {
            if(head == null || m == n)
                return head;
            
            ListNode fake = new ListNode(Integer.MIN_VALUE);
            fake.next = head;
            head = fake;
            
            int count = 0;
            ListNode pre = null, p = head, p1 = null, p2 = null, p3 =null;
            while(count <= n){
                if(count == m-1){
                    p1 = p;
                }else if(count == m){
                    p2 = p;
                }else if(count == n){
                    p3 = p;
                }
                
                ListNode tmp = p.next;
                
                if(count >= m+1 && count <= n){
                    p.next = pre;
                }
                pre = p;
                p = tmp;
                count++;
            }
            p1.next = p3;
            p2.next = p;
            
            return fake.next;
        }
    }
  • 相关阅读:
    浏览器兼容性
    Php Ajax 跨域问题
    $.ajax()验证登录
    ajax基础知识总结
    Highcharts获取json数据展现饼图 (转)
    (CV学习笔记)梯度下降优化算法
    (CV学习笔记)Attention
    (数学建模)线性规划
    NumPy中文文档搬砖(划掉)学习笔记(1)
    微机原理作业1微机基础
  • 原文地址:https://www.cnblogs.com/RazerLu/p/3551085.html
Copyright © 2011-2022 走看看