Reverse a linked list from position m to N. Do it in-place and in One-pass.
for example:
1->2->3->4->5->null , m = 2 and n = 4,
Return 1->4->3->2->5->NULL .
Note:
Given m, n satisfy the following condition:
1 ≤ m ≤ n ≤length of list.
Thought analysis: This problem and Leetcode Reverse Nodes in K-group very similar, requires a given start and end position of the partial linked list to reverse operation, I directly use the Leetcode Reverse Nodes in K-group inside the inverse list of the function AC, you need to pay attention to the correct beginnode and Endnode, while the M and n values of the corner case to be considered thoughtful.
AC Code:
/** * 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 = = n ull | | Head.next = = null) return head; int i = 1; ListNode cur = head; ListNode beginnode = null; ListNode endnode = null; while (cur! = null) {if (i = = m-1) {beginnode = cur; } if (i = = n+1) {endnode = cur; } i++; cur = cur.next; } if (n = = 1 | | m = = i-1) return head; if (m = = 1) {ListNode Fakenode = new ListNode (-1); Fakenode.next = head; Beginnode = Fakenode; } ListNode firstinreverse = Reverselinkedlist (Beginnode, Endnode); if (m = = 1) return firstinreverse; else return head; }//revErse nodes between Beginnode and Endnode (exclusively)//return the first node in the reversed partprivate static ListNode R Everselinkedlist (ListNode beginnode, ListNode endnode) {//TODO auto-generated method Stublistnode head = Beginnode.next; ListNode dummy = Head;//use dummy to maintain the new headlistnode pre = head; ListNode cur = pre.next; ListNode after = cur.next;while (cur! = endnode) {pre.next = After;cur.next = Dummy;dummy = Cur;cur = pre.next;if (cur = = nul L) Break;after = Cur.next;} Beginnode.next = Dummy;//!after Reverse, Beginnode should also before the first Node, Endnode should also before the last Nodereturn Dummy;}}
Leetcode Reverse Linked List II