剑指Offer

一句话说明

剑指 Offer 的价值不在题量,而在它把国内面试高频的数组、链表、树、DP、栈队列和搜索题压缩成了一套很稳定的基础题单。

怎么刷更有效

第一阶段:基础结构

  • 数组
  • 字符串
  • 链表
  • 树的遍历

第二阶段:核心套路

  • 双指针
  • 二分查找
  • BFS / DFS
  • 回溯
  • 一维 / 二维 DP

第三阶段:综合专题

  • 单调队列
  • 位运算
  • BST
  • 最近公共祖先

高频专题

专题代表题型关键词
数组重复数字、旋转数组、连续和哈希、二分、前缀和
链表倒数第 k 个、反转、相交快慢指针
树层序遍历、镜像、LCA递归、BFS
DP斐波那契、礼物最大价值状态定义
栈队列最小栈、滑动窗口最大值单调队列

一个代表性 Go 模板:链表倒数第 k 个节点

func getKthFromEnd(head *ListNode, k int) *ListNode {
    fast, slow := head, head
 
    for i := 0; i < k; i++ {
        fast = fast.Next
    }
 
    for fast != nil {
        fast = fast.Next
        slow = slow.Next
    }
 
    return slow
}

这个题型背后真正该记的是:

快指针先走 k 步,之后快慢一起走

一个代表性 Go 模板:二叉树镜像

func mirrorTree(root *TreeNode) *TreeNode {
    if root == nil {
        return nil
    }
 
    root.Left, root.Right = root.Right, root.Left
    mirrorTree(root.Left)
    mirrorTree(root.Right)
    return root
}

刷题建议

  • 不要按题号硬刷,按专题刷更有效
  • 每做完一个专题,顺手整理 1-2 个可复用 Go 模板
  • Offer 题适合用来建立“稳定手感”,不是用来堆最难技巧

相关页面


返回:LeetCode题解