import java.util.*;
public class Solution {
/**
*
* @param head ListNode类
* @param m int整型
* @param n int整型
* @return ListNode类
*/
public ListNode reverseBetween (ListNode head, int m, int n) {
// write code here
ListNode h = new ListNode(-1);
h.next = head;
ListNode p = h;
ListNode pre = p;
int t = m;
while(t-- > 0) {
pre = p;
p = p.next;
}
pre.next = reverse(p, n - m + 1);
return h.next;
}
private ListNode reverse(ListNode head, int size) {
ListNode l = null;
ListNode r = head;
ListNode t;
while (size-- > 0) {
t = r.next;
r.next = l;
l = r;
r = t;
if (size == 0) {
head.next = t;
}
}
return l;
}
}