leetcode 92 Reverse Linkedlist II
z

Reverse a linked list from position m to n. Do it in one-pass.

Note: 1 ≤ mn ≤ length of list.

Example:

1
2
Input: 1->2->3->4->5->NULL, m = 2, n = 4
Output: 1->4->3->2->5->NULL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public  ListNode reverseBetween(ListNode head, int m, int n) {
ListNode prev = new ListNode(0);
ListNode dump = new ListNode(0);
dump.next = head;
prev.next = head;
int start = m;
ListNode position = head;
int k = 1;
while(k < m){
position = position.next;
prev = prev.next;
k ++;
}
while(m < n){
ListNode temp = position.next;
position.next = temp.next;
temp.next = prev.next;
prev.next = temp;
m ++;
}
if ( start == 1){
return prev.next;
}
return head;
}