常见算法
排列组合问题
排列 每次丢掉上次用过的,剩下的继续递归
组合 每次丢掉上次用过的,只向右遍历,为了去掉相同组合,剩下的继续递归
二分法
查找目标左边界,值相等时向左移动,即right-=1,最后返回left
查找目标右边界,值相等时向右移动,即left+=1,最后返回right
递归
- 深度暴力
- 记忆化递归
排序
哈希
贪心
回溯
动态规划
动态规划一般分为一维、二维、多维(使用状态压缩),对应形式为 dp(i)、dp(i)(j)、二进制dp(i)(j)。
动态规划做题步骤
明确 dp(i)应该表示什么(二维情况:dp(i)(j));
根据 dp(i)和dp(i-1)的关系得出状态转移方程;
确定初始条件,如 dp(0)。
快慢指针问题
快指针去判断值,把想要的值保存到慢指针