多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

算法学习复盘怎样转成可复用防线

算法学习复盘怎样转成可复用防线 算法学习复盘怎样转成可复用防线复盘的价值不在于把代码再抄一遍而在于下次遇到变体时还能判断这套方法是否适用。笔记应写清问题特征、状态不变量、复杂度约束和反例。这样看到“最短路”时不会不分条件地上 Dijkstra看到“子数组”时也不会机械套滑动窗口。用不变量解释滑动窗口以最小覆盖子串为例窗口内每种所需字符的数量是否满足需求是比“左右指针怎么移动”更稳定的描述。右边界扩张到满足需求后左边界才开始收缩每次收缩都要确认不会破坏这个条件。while formed required: # 此时窗口覆盖所有目标字符先记录候选答案 update_answer(left, right) remove_left_char() left 1formed和required的定义要在代码外讲清前者是当前窗口中已满足数量的字符种类后者是目标字符的种类数。否则这段循环离开原题就无法复用。反例决定边界最小覆盖子串要测试空目标串、源串短于目标串、重复字符和无解输入。图算法则要先判断边权Dijkstra 不适用于存在负权边的图拓扑排序只能处理有向无环图。复杂度也应写成前提下的结论而不是一句“时间复杂度最优”。把可运行测试和推导过程放进笔记。题目换了表面真正帮助你重新做选择的仍然是这些约束和不变量。
返回列表