鄙人才疏学浅。有整理不到位的,勿喷。
注意搜题目时、只需百度”HDU”+算法名称即可
最基本
- C++ 指针与引用
- 类继承,多态(不懂的百度吧)
- 正则表达式
- (矩阵)快速幂
- 筛素数(了解)
- 二叉树前、中、后序遍历(递归、非递归形式(较难))
题目: HDU5015(矩阵快速幂)
第一节 链表操作相关
注: 该节需要写代码实现
- 反转链表(前插)
- 遍历链表
- 交叉反转链表
- 单调队列
- 链表中倒数第K个节点
题目: HDU4193(单调队列)
第二节 排序相关(分治)
注:该节需要代码实现
- 实现快速排序、基数排序、插入排序、归并排序(java或C++)
- 待定
题目:HDU2141(分治)、HDU2899(分治)、HDU4282(分治)、HDU2289(分治)、LeetCode上相关题目。
第三节 动态规划相关
- 最长上升子序列LIS(重要)
- 编辑距离
- 平面最近点对距离
- 最大子串和
- 最长公共子序列
- 区间DP、数位DP、树形DP。(较难DP(面试只需了解): 插头DP、状态压缩DP、斜率优化DP、概率DP)
题目:HDU5489(LIS)、HDU4323(编辑距离)、HDU1561(树形DP),HDU3001(状压DP)、HDU3664(排列DP)、HDU4507(数位DP)、HDU3480(斜率优化DP)、HDU2993(斜率优化DP)、HDU4003(树形DP)、HDU4028(离散化DP)、HDU4842(简单DP)、HDU4734(数位DP)、HDU3652(简单数位DP)、HDU4389(数位DP)、HDU3709(数位DP)、51nod1006(最长公共子序列)、HDU5045(压缩DP)、HDU5115(简单区间DP)、HDU4607(树形DP)、HDU5155(简单DP计数)、HDU4512(LIS)、HDU4532(排列DP)、HDU1007(平面最近点对距离)、
第四节 字符串相关
- KMP算法(next数组)
- 正则表达式
题目: HDU1711(KMP)、HDU3336(KMP)
第五节 搜索相关
- 最小生成树 Kruskal,Prim(必须掌握)
- 最段路径 Dijkstra、Floyd
- DFS(深度优先搜索)、BFS(广度优先搜索)【剪枝+持久化】
- 模拟退火
题目:HDU1372(BFS)、HDU3766(BFS)、HDU5017(退火)、
第六节 数据结构相关
注: 该节一般是笔试最后一题(较难),要求会基本方法,不要求掌握代码
- 字典树
- 第K大数
- B+ B树
- 红黑树
- KD树(面试可能会问理论)
- 伸展树(不做要求)
- 线段树
- 树状数组(与线段树功能类似,实现方式不同)
- 并查集
题目:HDU4027(线段树)、HDU1698(线段树+lazy优化)、HDU5032(树状数组)、POJ1195(二维树状数组)、HDU4819(二维线段树)、HDU4533(树状数组)、