一.题目描述
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。
https://leetcode-cn.com/problems/reverse-linked-list-ii/
二.代码
public ListNode reverseBetween(ListNode head, int left, int right) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode cur = dummy;
int i = 1;
while (i < left) {
i++;
cur = cur.next;
}
ListNode leftNode = cur;
ListNode rightPreNode = cur.next;
cur = cur.next;
ListNode pre = null;
while (left <= right) {
ListNode temp = cur.next;
cur.next = pre;
pre = cur;
cur = temp;
left++;
}
leftNode.next = pre;
rightPreNode.next = cur;
return dummy.next;
}