👉前端需要掌握的数据结构

常用数据结构

数据结构要点适合场景
数组连续内存、O(1) 随机访问频繁访问、遍历
链表指针链接、O(1) 插入删除频繁增删、动态大小
LIFO、后进先出函数调用、括号匹配
队列FIFO、先进先出任务调度、BFS
哈希表键值映射、O(1) 查找快速查找、去重
层级结构、节点连接DOM、文件系统
完全二叉树、优先队列top K、排序
节点 + 边、邻接矩阵/表社交网络、路径规划

数组与字符串

操作时间复杂度空间复杂度
访问O(1)-
搜索O(n)-
插入/删除O(n)O(1)
翻转O(n)O(n)

常用技巧:双指针、滑动窗口、前缀和


链表

操作时间复杂度
访问O(n)
插入/删除O(1)
反转O(n)

题型:反转链表、环形检测、合并有序链表


栈与队列

数据结构核心操作特性
push/popLIFO
队列enqueue/dequeueFIFO
双端队列前后均可操作滑动窗口

应用:函数调用栈、括号匹配、BFS、单调栈


哈希表

操作平均复杂度最坏复杂度
查找O(1)O(n)
插入O(1)O(n)
删除O(1)O(n)

题型:两数之和、计数、去重、字母异位词


操作时间复杂度
遍历O(n)
搜索O(log n)
插入/删除O(log n)

题型:二叉搜索树、路径总和、层序遍历


操作时间复杂度
插入O(log n)
取最值O(1)
删除最值O(log n)

应用:top K、数据流中位数、优先级队列


复杂度速查

分类数据结构查询插入删除
线性数组O(1)O(n)O(n)
线性链表O(n)O(1)*O(1)*
线性哈希表O(1)O(1)O(1)
线性栈/队列-O(1)O(1)
树形二叉搜索树O(log n)O(log n)O(log n)
树形O(1)O(log n)O(log n)
  • 指已知位置的情况

参考资源

  • LeetCode 分类刷题(数组、链表、树、堆)
  • 前端算法面试高频题集
  • 《算法导论》数据结构章节