/**
* 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) {
for (int i=0; i<n-m; i++) {
int k1 = m+i;
int k2 = n-i;
if (k1>k2) return head;
ListNode p = head;
ListNode q = head;
while (k1-1>0) {
p = p.next;
k1--;
}
while (k2-1>0) {
q = q.next;
k2--;
}
int temp = p.val;
p.val = q.val;
q.val = temp;
}
return head;
}
}
e.g. 1-->2-->3-->4-->5-->6-->7-->8-->9-->null, m=2, n=9.
回复删除1. 找到2和9,互换val。
2. 找到3和8,互换val。
3. 找到4和7,互换val。
4. 找到5和6,互换val。