- 最大间隔问题 求无序数组排序之后 相邻两数的最大差值?
【桶排序**的应用】
- 小和问题 给定一个数组,计算所有小和
【归并排序**的应用】
- 荷兰国旗问题 小于的放在左边、等于的放在中间、大于的放在右边
【快排划分的应用】
- 查找无序数组前k个最小的数 该程序基于堆排序**,建立大小为k的大根堆。
注: 该问题的最优解是下节中的BFPRT算法
- KMP算法
解决字符串匹配问题
- Manacher算法
解决最长回文子串问题
- BFPRT算法
查找无序数组中第k小的数
- 最短扩增序列(包含两个输入序列)
【基于KMP的next数组构建】
数组结构
- 使用数组实现栈结构
- 使用数组实现队列结构
- 实现可以输出栈中最小值的栈结构
- 两个栈实现队列结构
- 两个队列实现栈结构
- 猫狗队列
- 设计RandomPool结构
- 转圈打印矩阵
- 螺旋填数
- Z字形打印矩阵
- 行列排好序的矩阵中找数
- 岛屿问题
- 找到无序数组局部最小位置
二分也可用于数组无序的情况
- 找到有序数组中第一个大于或等于k的数
二分
- 子数组的最大累加和
- 子矩阵的最大累加和
- 最大的leftMax与rightMax之差的绝对值
- 无序数组中3数相乘的最大值
链表结构
- 打印两个有序链表的公共部分
注: Node类中, value和next依附于实例
- 链表是回文结构?
- 链表的Partition过程
- 复制含有随机指针节点的链表
- 寻找两个单链表第一个相交的结点
- 反转单(双)向链表
树结构
- 折纸问题
- 二叉树的先序、中序、后序遍历
重点是非递归实现
- 较为直观打印二叉树
- 在二叉树中找到一个节点的后继节点
- 前缀树
处理字符串常用的数据结构
- Morris遍历
遍历二叉树的神级方法
- 跳表结构
- 找到二叉树中的最大搜索二叉子树
后序遍历的改写
- 找到二叉树中符合搜索二叉树条件的最大拓扑结构
后序遍历的改写
- 判断一颗二叉树是否是平衡二叉树
后序遍历的改写
- 在二叉树中找到两个节点的最近公共祖先
堆结构
- 随时找到数据流的中位数
P462
- 切金条问题:最小分割代价
- 如何使得项目获得收益最大化
涉及python的类的继承
图结构
其他重要知识
字符串问题
递归
函数的递归过程是函数自己调用自己的过程。 基本**:把一个规模大的问题,转化成若干个规模小的子问题,并且大问题和其子问题的解决策略是一致的(同一种方法)。 递归函数必须有明确的结束条件!
动态规划
动态规划是一种分阶段求解决策问题的数学**。 三个重要的概念: 最优子结构、 边界、 状态转移公式。 动态规划利用自底向上的递推方式,实现时间和空间上的额最优化。