92. 反转链表 II
约 149 字小于 1 分钟
92. 反转链表 II
题目描述
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。
示例
输入:head = [1,2,3,4,5], left = 2, right = 4
输出:[1,4,3,2,5]
解题思路
双指针+头插法。
class Solution {
public ListNode reverseBetween(ListNode head, int m, int n) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode pre = dummy;
for (int i = 1; i < m; i++) {
pre = pre.next;
}
head = pre.next;
for (int i = m; i < n; i++) {
ListNode cur = head.next;
head.next = cur.next;
cur.next = pre.next;
pre.next = cur;
}
return dummy.next;
}
}