Skip to content

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