K个一组翻转链表

当前状态 / 解释

准备就绪,点击“开始”或“单步”执行算法。

颜色图例:

Dummy 当前组 已完成

算法伪代码

function reverseKGroup(head, k):
dummy = new Node(0, head)
pre = dummy, end = dummy
while end.next != null:
for i in 0..k: end = end.next
if end == null: break
start = pre.next
nextGroup = end.next
end.next = null // 断开链接
pre.next = reverse(start)
start.next = nextGroup // 连接后面
pre = start
end = start
return dummy.next
function reverse(head):
pre = null, cur = head
while cur != null:
nxt = cur.next
cur.next = pre
pre = cur, cur = nxt
return pre