难度上升一级的反转链表;一样通过动画图片代码让你清晰明了理解反转链表;
看动画胜过千言万语
动态图
静态图
扫描二维码关注公众号,回复:
13455836 查看本文章
代码
var reverseBetween = function (head, left, right) {
if (head === null) return null
if (left === right) return head
const header = new ListNode(-1)
header.next = head
let after = null
let start = header
for (let i = 0; i < left; i++) {
start = start.next
after = after ? after.next : header
}
let next = head
for (let i = 0; i < right; i++) {
next = next.next
}
const current = reverce(start, right - left + 1)
after.next = current
start.next = next
function reverce(node, len) {
let pre = null
let current = node
let next = node.next
while (len--) {
current.next = pre
pre = current
current = next
next = next ? next.next : null
}
return pre
}
return header.next
}
复制代码