算法笔记

编程的正确方式

【TBD】

教训篇

  1. 中途加变量,那就充分运用它。

  2. 写一些assert,知道有没有达到心中所想。

  3. cur = nullptr; 只是把cur指向nullptr,原指向cur的指针不变~

=== 神秘地址

解决算法问题的思路

  • 减而治之

  • 分而治之

  1. 暴力想法:枚举所有可能的结果。一种是直接暴力模拟求解,另一种是逆向思维枚举判断可能的结果

  2. 在暴力中发现有无重叠子问题、有无最优子结构等,进行空间换时间的优化。

  3. 根据有关性质(如:单调、数据范围)等,考虑进一步优化。

  4. 如果实在没辙,可以试试位运算、二分答案 等魔法。

【子问题思路】递归:两条线,往下调用和往上返回是两种类别,可以区分开的。

Tricks:

  1. 数组不一定按元素值排序,可以存下标去对应

  2. 递归可以设置全局辅变量(如ans/tmp...)

  3. 可以边遍历边构造数组

  4. 二分答案 法:常用于"最大的最小..."系列。

最后更新于

这有帮助吗?