- 反转链表 II
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-linked-list-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
// 为什么需要dammy节点 --当你在链表的头部放入一个哨兵,然后连上head节点。 之后就把head节点当做普通节点,不用单独考虑了。
var reverseBetween = function(head, left, right) {
if (head === null || head.next === null || left === right) { return head }
let dammy = new ListNode()
dammy.next = head
let prev = dammy
// 从left节点开始反转就把节点快进到left
for (let i = 1; i < left; i++) {
prev = prev.next
}
let cur = prev.next
for (let i = left; i < right; i++) {
let next = cur.next
cur.next = next.next
next.next = prev.next
prev.next = next
}
return dammy.next
};