1. 题目
2. 思路
(1) 伪头结点
- 新建一个伪头结点指向原链表的头结点,便于头结点参与反转。
3. 代码
public class Test {
public static void main(String[] args) {
}
}
class ListNode {
int val;
ListNode next = null;
}
class Solution {
public ListNode reverseBetween(ListNode head, int m, int n) {
ListNode preHead = new ListNode();
preHead.next = head;
head = preHead;
while (m > 1) {
head = head.next;
m--;
n--;
}
ListNode node = head.next;
ListNode cur = node;
ListNode next = node;
while (n > 0) {
node = node.next;
cur.next = head.next;
head.next = cur;
cur = node;
n--;
}
next.next = cur;
return preHead.next;
}
}