刷数据结构题应围绕“操作成本”展开。数组支持 O(1) 下标访问却不擅长中间插入;链表反之。哈希表用空间换平均常数查找;栈表达后进先出和未完成状态;队列表达层次与到达顺序;堆持续维护极值;树与图表示层级和一般关系。

数组训练可覆盖原地去重、区间合并、前缀和与双指针;链表重点是反转、环、合并和倒数节点;栈适合括号匹配、表达式、单调栈;队列适合 BFS 和滑动窗口;哈希表练计数、去重与映射;树要掌握前中后序、层序、递归信息汇总;图则练连通块、拓扑和最短路;堆用于 Top K 与多路归并。

解题步骤是先列出所需操作:是否频繁查键、取得最值、两端进出、按层扩展或保持有序。再选择让核心操作便宜的数据结构,并核算维护代价。例如优先队列取顶是 O(1),但插入和删除顶通常是 O(log n);哈希查找平均 O(1),并不保证顺序和最坏性能。

训练同一结构时应加入变式:输入是否有序、数据是否流式、能否修改原数组、是否允许额外空间。这样才能理解方案适用范围。实现后至少测试空集合、单元素、重复元素、极值和退化结构。

误区包括按题目名猜结构、只记 API 不懂内部成本、遇到树就递归却忽略栈深,以及为了使用高级结构增加不必要复杂度。小结:数据结构是对操作需求的回答;先明确要快的是哪一种操作,再选容器。