算法题解整理
结题方法总结
序号 | 类型 | 解法1 | 解法2 | 步骤 | 备注 | 注意 |
---|---|---|---|---|---|---|
1 | 动态规划 | DP table的状态转移+确定 base case | 变换目标(背包问题,可拿出);第i个位置的值等于遍历之前所有的dp值补上第i个位置到此位置的差值,取最大的值更新a[i] | 子序列问题一般可用DP来解决 | 子序列的问题,一般用DP可以来解决:用一个dp数组存储,value为截止到字符串1的第i个,字符串2的第j个为止,最长的、匹配的公共子序列 | |
2 | 二叉树 | 递归遍历每个结点(遍历左右节点的顺序,压栈;直到全部出栈);验证二叉树;二叉搜索树;中序遍历(dfs的遍历顺序不同) | 引入上下边界+DFS递归每个根节点 | |||
3 | DFS | |||||
4 | BFS | |||||
5 | 并查集 | 使用成为"成为家庭"和"找父亲"的方法解决 | ||||
6 | 字符串 | 字符串与整形的转换;模式匹配(拼接函数:strcon(des,source));子字符串(长度最长、字典序最小) | 通过先引入当前最适合的变量,通过与当前最适合的变量相比,排除去一部分情况。 | itoa(整形,字符数组名,进制;tostring()将整型转换为string类型;string 将字符数组转换为string类型 | ||
7 | 合并 | 递归 | ||||
8 | 排序 | 快排:将一个数放到合适的位置,再对其左右两边递归操作。直到左边界>=右边界; | ||||
9 | 数学 | 排列组合:插位置放东西 | ||||
10 | 英文题 | 注意看题目 | ||||
11 | 多项式 | 用数组存储多项式的幂和系数,将相同幂的值相关起来 | ||||
12 | 金字塔型 | 找规律:累加次数的规律 | ||||