这条路线面向已经能写基本Python程序、希望建立系统算法知识的人。若列表、字典、函数与异常仍不熟,先完成路线中的Python基础;离散数学按证明、集合、图和计数的实际需求随学随查,不要求先背完整本数学书。

每一阶段怎样学

先阅读当前知识点的问题定义和不变量,手算一个普通例子与一个反例,再运行该文的 example.py 与 test_example.py。接着关闭正文,自己实现一个版本;最后对照原有测试,增加能触发自己错误的输入。路线节点跳转到唯一正文,同一概念在面试和项目路线中不会另存一份。

容器阶段结束时,应能解释为何列表不适合作长队列、哈希碰撞不等于键相同、堆不代表完全排序。设计阶段结束时,应能从状态含义推导背包遍历方向,为贪心写交换论证,并指出正数窗口规则遇到负数为何失效。图字符串阶段结束时,应能根据边权与目标选BFS、Dijkstra或生成树模型,并解释KMP失败转移。

练习与完成条件

把每篇附带的原创练习当成能力检查。正确性先与小规模基线对拍,再在较大输入上测量;不要把一次跑通或点过“已学”当作已经掌握。能说明前提、边界、复杂度,并且不看答案完成相应变式,才适合标记为掌握。

最后独立完成依赖调度与本地搜索:能拒绝未知依赖和环,解释无限资源下的关键路径;搜索能处理替换、删除和Unicode规范化,并与全量扫描结果一致。性能报告写下环境与输入规模,只报告实际测量结果。若当前只准备面试,可转入算法面试练习路线进行定向复习。