• [leetcode] Reverse Linked List II


    题目:(LinkedList)

    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;
     *         next = null;
     *     }
     * }
     */
    public class Solution {
        public ListNode reverseBetween(ListNode head, int m, int n) {
            ListNode fakeHead = new ListNode(0);
            fakeHead.next = head ;
            
            if(head==null||head.next==null)
               return fakeHead.next;
               
            ListNode prev = fakeHead;
            ListNode curr = null;
            ListNode last = null;
            
            for(int i=0; i<n; i++)
            {
                if(i<m-1)
                {
                    prev=prev.next;
                }
                else if(i==m-1)
                {
                    last=prev.next;
                    curr=last.next;
                }
                else
                {
                    last.next=curr.next;
                    curr.next=prev.next;
                    prev.next=curr;
                    curr=last.next;
                }
            }
     
            return fakeHead.next;
        }
    }
  • 相关阅读:
    Mysql_常规操作
    三剑客
    Nginx_安全2
    shell_常规小脚本
    redis数据库持久化
    redis数据库操作
    keepalived高可用lvs集群
    ansible的roles角色
    keepalived高可用
    keepalived概念
  • 原文地址:https://www.cnblogs.com/fengmangZoo/p/4196916.html
Copyright © 2020-2023  润新知