1 public class Solution {
2 public ListNode reverseBetween(ListNode head, int m, int n) {
3 // IMPORTANT: Please reset any member data you declared, as
4 // the same Solution instance will be reused for each test case.
5 ListNode newhead = new ListNode(0);
6
7 newhead.next = head;
8
9 ListNode runner = newhead;
10 for(int i = 0; i < m-1; i++)
11 {
12 runner = runner.next;
13 }
14 ListNode premindex = runner;
15 ListNode mindex = runner.next;
16
17 ListNode pre = mindex;
18 runner = mindex.next;
19
20 for(int i = 0; i < n - m; i++)
21 {
22 ListNode tmp = runner.next;
23 runner.next = pre;
24 pre = runner;
25 runner = tmp;
26 }
27 premindex.next = pre;
28 mindex.next = runner;
29 return newhead.next;
30 }
31 }