/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseBetween(ListNode head, int m, int n) {
ListNode dummy = new ListNode(-1); // 哑巴节点,指向链表的头部
dummy.next = head;
ListNode pre = dummy; // pre 指向要翻转子链表的前驱节点
for (int i = 1; i < m; ++i) {
pre = pre.next;
}
head = pre.next; // head指向翻转子链表的首部
ListNode next;
for (int i = m; i < n; ++i) {
next = head.next;
// head节点连接next节点之后链表部分,也就是向后移动一位
head.next = next.next;
// next节点移动到需要反转链表部分的首部
next.next = pre.next;
// pre继续为需要反转头节点的前驱节点
pre.next = next;
}
return dummy.next;
}
}
标签:pre,BM2,head,ListNode,int,反转,next,链表
From: https://www.cnblogs.com/chenjo/p/16715283.html