package com.interview.books.leetcodeoj;
import com.interview.leetcode.utils.ListNode;
/**
* Created_By: stefanie
* Date: 14-12-25
* Time: 下午6:40
*/
public class LOJ92_ReverseLinkedListII {
//find the prev, and tail based on m and n
//reverse nodes between prev.next and tail
public ListNode reverseBetween(ListNode head, int m, int n) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode prev = dummy;
while(m > 1){
prev = prev.next;
m--; n--;
}
ListNode tail = prev.next;
while(n > 1){
tail = tail.next;
n--;
}
ListNode cur = prev.next;
prev.next = tail;
prev = tail.next;
while(prev != tail){
ListNode next = cur.next;
cur.next = prev;
prev = cur;
cur = next;
}
return dummy.next;
}
}