首页 > 代码库 > [leetcode] Reverse Linked List II

[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;    }}

 

[leetcode] Reverse Linked List II