力扣 中等 92.反转链表 II
文章目录
- 题目介绍
- 题解
题目介绍
题解
class Solution {public ListNode reverseBetween(ListNode head, int left, int right) {// 创建一个哑节点,它的 next 指向头节点,方便处理ListNode dummy = new ListNode(0, head);// p0 用于指向反转部分的前一个节点ListNode p0 = dummy;// 移动 p0 到反转部分的前一个节点for (int i = 0; i < left - 1; i++) {p0 = p0.next;}ListNode cur = p0.next, pre = null;// 执行反转for (int i = 0; i < right - left + 1; i++) {ListNode next = cur.next;cur.next = pre;pre = cur;cur = next;}// 反转完之后,cur 指向需要反转部分的下一个节点// pre指向需要反转部分的最后一个节点// 此时 p0.next 还和原来一样,指向未反转时需要反转的第一个节点p0.next.next = cur;p0.next = pre;// 返回哑节点的下一个节点,即头节点return dummy.next;}
}