算法面试突击:从排序到动态规划

2103 字
11 分钟
算法面试突击:从排序到动态规划

算法面试突击:从排序到动态规划#

面向游戏客户端开发岗的算法笔记系列。与数据结构系列互补——数据结构讲”容器”,算法讲”思路”。每章覆盖:原理图解 → 算法实现 → 高频面试题 → 🎮 游戏实战 → 30 秒速答。


系列全景#

graph TD subgraph "基础算法思想" Ch1["Ch1 排序算法\n★★★★★"] Ch2["Ch2 二分查找与二分答案\n★★★★☆"] end subgraph "核心算法范式(基础)" Ch3["Ch3 动态规划·基础\n★★★★★\n线性DP + 背包"] end subgraph "核心算法范式(进阶)" Ch4["Ch4 动态规划·进阶\n★★★★☆\n区间 + 状压 + 树形"] Ch5["Ch5 贪心算法\n★★★★☆"] Ch6["Ch6 回溯与搜索进阶\n★★★★☆"] end subgraph "专项技巧" Ch7["Ch7 数学算法\n★★★☆☆"] Ch8["Ch8 位运算与状态压缩\n★★★☆☆"] Ch9["Ch9 字符串算法\n★★★☆☆"] end Ch1 --> Ch2 --> Ch3 --> Ch4 --> Ch5 --> Ch6 --> Ch7 --> Ch8 --> Ch9 style Ch1 fill:#d00000,stroke:#e85d04,color:white style Ch2 fill:#e85d04,stroke:#f48c06,color:white style Ch3 fill:#d00000,stroke:#e85d04,color:white style Ch4 fill:#e85d04,stroke:#f48c06,color:white style Ch5 fill:#e85d04,stroke:#f48c06,color:white style Ch6 fill:#e85d04,stroke:#f48c06,color:white style Ch7 fill:#2d6a4f,stroke:#40916c,color:white style Ch8 fill:#2d6a4f,stroke:#40916c,color:white style Ch9 fill:#2d6a4f,stroke:#40916c,color:white

章节导航#

📗 基础算法思想 (Ch 1–2)#


第一章 排序算法全家桶#

从 O(n²) 到 O(n log n) 再到 O(n),手写快排/归并/堆排,稳定性分析与面试选型,缓存友好性深度剖析。

核心内容

  • O(n²) 排序(冒泡/插入/选择)及各自的存在价值
  • 快速排序(Lomuto/Hoare 分区、三数取中、三路快排)
  • 归并排序(链表排序的最佳选择)
  • 堆排序(建堆 O(n) 证明)
  • 非比较排序(计数/基数/桶)
  • 缓存友好性专题:快排 vs 堆排的缓存行为对比、Timsort 简介
  • 面试技巧:Quick Select、荷兰国旗问题、链表归并
  • 🎮 渲染排序、排行榜 Top-K、好友列表多级排序

第二章 二分查找与二分答案 🔜#

数据结构 Ch1 讲了”在有序数组里找一个数”,本章讲的是”猜一个答案,验证它是否可行”——两种完全不同的思维方式。

核心内容

  • 二分查找统一模板(lower_bound / upper_bound
  • 旋转数组二分
  • 二分答案:可行性判定函数设计、“最大化最小值” vs “最小化最大值”
  • 二分 + 其他数据结构的组合
  • 🎮 游戏难度动态调整、LOD 距离阈值

📘 核心算法范式·基础 (Ch 3)#


第三章 动态规划(基础)—— 线性DP + 背包问题 🔜#

算法面试的王者。线性 DP 和背包问题是 DP 的两大基石,本章给出通用状态定义模板和转移方程套路。

核心内容

  • DP 核心思想:最优子结构、无后效性
  • 线性 DP(LIS、LCS、编辑距离)
  • 0-1 背包 + 完全背包 + 变体
  • DP 与缓存友好性:行优先 vs 列优先遍历
  • 🎮 装备选择、天赋点数分配、消耗品使用策略

📙 核心算法范式·进阶 (Ch 4–6)#


第四章 动态规划(进阶)—— 区间DP + 状压DP + 树形DP 🔜#

进阶 DP 类型覆盖区间、状态压缩、树形三大类——面试中区分”会 DP”和”精通 DP”的分水岭。

核心内容

  • 区间 DP(戳气球、石子游戏)
  • 状态压缩 DP(TSP、子集划分)
  • 树形 DP(二叉树路径、打家劫舍 III)
  • DP 优化技巧(滚动数组、单调队列优化)
  • 🎮 合成最优策略、技能树解锁规划

第五章 贪心算法 🔜#

贪心是 DP 的”反面”——不需要全局最优,每一步选当前最好即可。面试中贪心题的关键是证明为什么贪心正确。

核心内容

  • 贪心 vs DP 的抉择判断
  • 区间调度、分配问题、跳跃游戏
  • 霍夫曼编码
  • 贪心正确性证明(交换论证、归纳法、反证法)
  • 🎮 技能 CD 管理、AI 寻路 JPS、资源采集路径

第六章 回溯与搜索进阶 🔜#

回溯是”万能暴力法”。当 DP 和贪心都不适用时,回溯 + 剪枝是最后的武器。

核心内容

  • 回溯算法框架(排列/组合/子集)
  • 棋盘问题(N 皇后、解数独)
  • 剪枝策略专题(可行性、最优性、对称性、记忆化)
  • BFS → Dijkstra → A* 完整演化
  • 🎮 Alpha-Beta 剪枝、战棋移动范围、A* 寻路

📕 专项技巧 (Ch 7–9)#


第七章 数学算法 🔜#

快速幂、最大公约数、质数筛是面试基础题;组合数学和随机算法在复杂题目中出现。

核心内容

  • 快速幂与矩阵快速幂
  • GCD、扩展欧几里得、模逆元
  • 质数筛(埃筛 + 欧拉筛)
  • 组合数学基础(杨辉三角、卡特兰数)
  • 概率与随机算法(洗牌、蓄水池抽样)
  • 🎮 伤害衰减公式、宽高比计算、卡牌洗牌

第八章 位运算与状态压缩 🔜#

位运算是 C++ 的底层优势,在游戏开发中无处不在(Layer Mask、碰撞检测、状态标记)。

核心内容

  • 位运算基础操作与经典题
  • 状态压缩应用(Gosper’s Hack)
  • 布隆过滤器
  • 位运算与缓存友好性:位图 vs 数组遍历
  • 🎮 Layer Mask、角色状态机、技能冷却位图

第九章 字符串算法 🔜#

KMP 是面试中的经典手写题,Rabin-Karp 的滚动哈希思想在内容去重中广泛应用。

核心内容

  • 字符串哈希(多项式哈希、前缀哈希)
  • KMP 算法(next 数组推导)
  • Rabin-Karp 算法(滚动哈希)
  • AC 自动机简介(Trie + KMP)
  • 🎮 聊天敏感词过滤、资源文件去重

系列特色#

特色说明
C++17 实现所有代码均使用 C++17 风格,工业级可运行
110+ 面试题覆盖 LeetCode Hot 100 + 剑指 Offer 中的算法题目
Mermaid 图解每种算法都有执行过程、决策树、内存布局的可视化图示
🎮 游戏实战每章都有游戏客户端/引擎的真实应用场景与代码
缓存友好性跨章节主线——从缓存视角理解算法的实际性能差异
30 秒速答每章末尾都有面试口述模板

与数据结构系列的互补关系#

数据结构系列算法系列
Ch1 数组 → 双指针、滑动窗口、前缀和Ch2 二分答案、Ch3 线性 DP
Ch3 栈 → 单调栈、递归调用栈Ch6 回溯(递归栈的泛化)
Ch4 队列 → BFS 层序遍历Ch6 BFS → Dijkstra → A* 演化
Ch5 哈希表 → 两数之和、去重Ch9 Rabin-Karp(滚动哈希)
Ch6 树 → 遍历框架、BST 操作Ch4 树形 DP、Ch6 A* 寻路
Ch7 图 → BFS/DFS/Dijkstra/A*Ch5 贪心、Ch6 剪枝
Ch8 字典树 → Trie 实现Ch9 KMP/AC 自动机
Ch9 并查集 → 连通性Ch4 状压 DP 类型识别

数据结构系列给了你工具,算法系列教你怎么用这些工具解决问题


推荐阅读路线#

🚀 面试急救(5 天)#

Day 1: Ch1 排序(快排/归并/堆排)→ Ch2 二分答案(核心题)
Day 2: Ch3 DP 基础(线性DP + 0-1背包)
Day 3: Ch3 DP 基础(完全背包)→ Ch5 贪心(区间调度 + 跳跃游戏)
Day 4: Ch6 回溯(排列/组合/子集 + 剪枝)
Day 5: Ch7 数学(快速幂 + GCD)→ Ch8 位运算(基础操作 + 经典题)

📚 系统掌握(4 周)#

Week 1: Ch1 排序 → Ch2 二分 → Ch3 DP 基础(线性 + 0-1 背包)
Week 2: Ch3 DP 基础(完全背包 + 变体)→ Ch4 DP 进阶(区间 + 状压)
Week 3: Ch4 DP 进阶(树形 + 优化)→ Ch5 贪心 → Ch6 回溯
Week 4: Ch7 数学 → Ch8 位运算 → Ch9 字符串

🎮 游戏开发重点#

  1. Ch1 排序 + 缓存 — 渲染排序的性能本质
  2. Ch3 背包 DP — 装备选择、资源分配
  3. Ch6 BFS→Dijkstra→A* — 寻路系统(游戏开发面试必问)
  4. Ch8 位运算 — Layer Mask、状态标记
  5. Ch9 字符串 — 敏感词过滤、内容哈希

面试题统计#

章节题目数EasyMediumHard
Ch1 排序~152103
Ch2 二分~120102
Ch3 DP 基础(线性+背包)~183114
Ch4 DP 进阶(区间+状压+树形)~12039
Ch5 贪心~120102
Ch6 回溯与搜索~15087
Ch7 数学~10262
Ch8 位运算~8341
Ch9 字符串~8251
总计~110126731

💡 如果时间有限,优先刷排序(Quick Select + 荷兰国旗)→ 二分答案 → 背包 DP → 区间贪心 → 排列组合回溯——这五个专题覆盖了 50% 以上的算法面试题。


📖 本系列全部文章均采用 CC BY-NC-SA 4.0 协议发布。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

算法面试突击:从排序到动态规划
https://firefly-7a0.pages.dev/posts/algorithm/
作者
lonelystar
发布于
2026-04-28
许可协议
CC BY-NC-SA 4.0
相关文章 智能推荐
1
C++ 面试突击:从语法到底层
C++深入笔记 **面试突击系列 · 全景导航。** 8 章内容覆盖 C++ 内存模型、智能指针、OOP 多态、移动语义、模板泛型、编译链接、并发多线程与现代 C++ 特性——面向游戏客户端开发岗,从原理剖析到游戏实战,从经典陷阱到 30 秒速答。
2
设计模式:从 SOLID 到游戏架构
设计模式笔记 **游戏客户端开发 · 设计模式全景导航。** 6 章覆盖设计原则与 SOLID、创建型、行为型(上/下)、结构型与游戏架构模式——面向游戏客户端开发岗,从场景问题出发,到模式结构与实现,再到游戏实战。
3
计算机网络面试突击:从协议到实战
计算机网络笔记 **面试突击系列 · 全景导航。** 7 章内容覆盖网络分层模型、TCP 深入、UDP 与可靠 UDP(KCP)、HTTP/HTTPS、Socket 编程与 IO 模型、DNS/NAT/CDN、游戏网络同步(帧同步/状态同步)——面向游戏客户端开发岗与计网课程考试。
4
数据结构面试突击:从零到 Offer
数据结构笔记 **面试突击 · 数据结构全系列导航。** 10 章 17 篇,覆盖数组、链表、栈、队列、哈希表、树(6 篇)、图(3 篇)、字典树、并查集与选型指南。C++17 实现 + 100 余道高频面试题 + 游戏引擎实战场景,一站式搞定数据结构面试。
5
操作系统笔记:从进程到协程
操作系统笔记 **面试突击系列 · 操作系统全景导航。** 9 章内容覆盖进程线程、同步互斥、内存管理、CPU 缓存、进程调度、IPC、文件 I/O、协程与调试性能分析——面向游戏客户端开发岗,从底层原理到游戏实战,从经典陷阱到 30 秒速答。
随机文章 随机推荐

评论区

Profile Image of the Author
LonelyStar
Hello, I'm LonelyStar.
公告
欢迎来到我的博客!
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
119
分类
11
标签
346
总字数
226,548
运行时长
0
最后活动
0 天前

目录