01基础
背包、队列、栈先当 ADT:规定对象、关系和操作,不规定数组还是链表。
ADT→数组 / 链表→操作代价不同
下标访问只有顺序存储是 O(1)。单链表按位定位 O(n);已有前驱后改链才 O(1)。循环队列要先声明空满约定。
04图
邻接表上 BFS、DFS 都是 O(V+E)。BFS 得无权最短路。Prim / Kruskal 可处理负权边;Dijkstra 可用于加权有向/无向图,但要求边权非负。
BFS 队列/DFS 栈→访问序不同
Bellman-Ford 能检负环,但标准单源版本只能检出从源点可达的负权环。拓扑只对 DAG。
05字符串概览
第 5 部分的单词查找树、子串、正则,408 数据结构只落到「串匹配」薄层。设 1≤m≤n,朴素最坏 Θ((n−m+1)m);最好成功匹配情形是第一次对齐即匹配、比较 Θ(m),不能无条件当整个算法最好界。
KMP 主串指针不回退。更细的后缀结构标超纲。
章末自测
默认实现通常不稳。本站口径:不要把「可改成稳定」写成默认结论。
一个用队列按层扩,一个沿邻接表递归走到底再回溯。本站 7 点图:BFS 为 A B C D E F G,DFS 为 A B D F E C G。
不能。可视化帮建立直觉;严口径 next 仍要自己推。abaabc → 0 1 1 2 2 3。