题解 | #链表内指定区间反转#
链表内指定区间反转
https://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c
整体使用的是一种类似头插法的思路,pre为头结点,将当前cur结点不断的往前边移动。
import java.util.*;
public class Solution {
public ListNode reverseBetween (ListNode head, int m, int n) {
ListNode res = new ListNode(-1);
res.next = head;
ListNode pre = res;
ListNode cur = head;
for (int i=0; i<m-1; i++){
pre = cur;
cur = cur.next;
}
// 此时pre为m的前一个结点,
// cur为当前m结点
//翻转m-n结点
//
for (int i=m; i<n; i++){
ListNode tmp = cur.next;
cur.next = tmp.next;
tmp.next = pre.next;
pre.next = tmp;
}
return res.next;
}
}