25. K个一组翻转链表
- 题号:25
- 来源:LeetCode
- 难度:困难
- 标签:
链表模拟 - 语言:TypeScript
- 解法:1 个
- 作者:lmliheng
- 最近更新:2026-09-27
TypeScript · O(n) 时间 · O(n) 空间 · 更新于 2026-09-27
取值到数组按 k 分组翻转后重建链表
typescript
import { ListNode } from "../JS/DataStructure/ListNode.js"
/**
* @difficulty hard
* @tags 链表,模拟
* @time O(n)
* @space O(n)
* @note 取值到数组按 k 分组翻转后重建链表
* @25. K 个一组翻转链表
*/
function reverseKGroup(head: ListNode<number> | null, k: number): ListNode<number> | null {
let arr = []
let p = head
while (p) {
arr.push(p.val)
p = p.next
}
let n = arr.length
let res = []
for (let i = k - 1; i < n; i += k) {
res.push(...arr.slice(i + 1 - k, i + 1).reverse())
}
res.push(...arr.slice(res.length))
// create ListNode
let newHead = new ListNode(0)
let p1 = newHead
for (let i = 0; i < n; i++) {
p1.next = new ListNode(res[i])
p1 = p1.next
}
return newHead.next
};源码:ts/leetcode/25. K个一组翻转链表.ts
在 GitHub 上查看题目所在目录:lmliheng/algorithm