算法题思路总结

为了避免思路遗漏给解题照成困难,总结一下思路:

大体有3个:看转化

1.直接模拟法:也就是问题自己处理自己,不需要转化.直接按问题跑一边即可.

2.转化到其他数据结构和运算来进行处理:绝大部分题目都这么想.要实现什么功能,用什么数据结构来实现这个功能,是否能转化到已经处理过的成型套路解法:

   (只要简化后,让问题变得更直白简单一点就可以)

           辅助数组,辅助矩阵

           单调栈,双端队列维护滑动窗口最大值(左神的2个法宝)

           索引堆,堆,队列,双端队列,红黑树,字典,

3.递归,转化到跟自身相似的子问题.需要最优子结构:

           ●动态规划和贪心法.(需要结合使用,半贪心半动态规划才是最好用的,考虑动态规划时候不要忘了尝试是否能用贪心来加速)

           ●遇到动态规划问题解决不清楚,也就是得不到最优子结构时候,考虑加描述加条件来细化分解得到更高维的动态规划.(牛牛跳跃问题,合并回文子串问题)

原文地址:https://www.cnblogs.com/zhangbo2008/p/9236929.html