algorithm

数据结构和算�?

大厂前端面试,先从算法开始�?
::: tip

  1. 目标不在中大厂的同学,可以略过算法这一节�?2. 算法 0 基础的同学,可先略过这一节,临时准备根本来不及,需要日常积累�?3. 如果时间不够,每个分类刷 1-2 道,全刷完太多了。主要是掌握解题的套路�? :::

::: tip
如有疑问,可免费 加群 讨论咨询,也可参�?1v1 面试咨询服务�?专业、系统、高效、全流程 准备前端面试
:::

算法基础 Basic

磨刀不误砍柴工,别着急刷 LeetCode 等算法题,先把基础巩固好,会事半功倍�?
如果这些基础知识都无法自学搞懂,请加群寻求帮助,不要自己独立钻研,要掌握学习方法�?

前端常见的数据结构有哪些?有什么基础算法?有什么应用场景?

数组/字符�?

基础算法�?

  • 排序:冒泡排序,快速排序等
  • 查找:二分查�?

链表

应用场景:React fiber 结构

基础算法:遍历,反转

�?

应用场景�?

  • 撤销/重做 undo/redo
  • 内存堆栈模型

基础算法�?

  • 压栈 push
  • 出栈 pop

队列

应用场景�?

  • Event Loop 事件循环
  • 消息队列服务

基础算法�?

  • 入队 enqueue
  • 出队 dequeue

�?

应用场景:DOM 树,VDOM

基础算法�?

  • 深度优先搜索 DFS
  • 广度优先搜索 BFS

二叉�?

应用场景�?

  • 基础的二叉树应用场景不多,主要用于学习和面试 😄
  • 二叉树扩展出来的,平衡二叉树、AVL 树、红黑树、B+ 树、Trie 树,有大量的应用场景,如数据库管理、文件系统管理、虚拟内存管理等
  • 前端使用的场景较少,了解其基础知识即可

基础算法�?

  • 前序遍历
  • 中序遍历
  • 后续遍历

�?

应用场景:内存堆栈模�?
基础算法:堆排序

�?

应用场景:前端流程图、关系图,社交网络模型,搜索引擎

基础算法�?

  • 深度优先搜索 DFS
  • 广度优先搜索 BFS
  • 最短路径,Dijkstra 算法

什么是时间复杂度?

算法的时间复杂度�?*定�?*(数量级)的描述算法运行的时间,�?O 符号表示�?
常见的时间复杂度

  • O(1) 常数级,无循�?- O(n) 线性,单层循环
  • O(logn) 二分算法
  • O(n*logn) 单层循环,嵌套二分算�?- O(n^2) 两层循环
  • O(n^3) 三层循环,实际不可用

图示如下

什么是空间复杂度?

同时间复杂度,只是把时间换成空间。时间是 CPU 的消耗,空间是内存的消耗�?

数组 Array

两数之和

买卖股票的最佳时�?

盛水最多的容器

除自身以外数组的乘积

字符�?String

无重复字符的最长子�?

验证回文�?

反转字符串中的单�?

最长回文子�?

链表 Linked List

反转链表

合并两个有序链表

删除链表的倒数�?N 个结�?

判断环形链表

相交链表

�?Stack

有效的括�?

最小栈

用栈实现队列

字符串解�?

队列 Queue

用队列实现栈

最近的请求次数

二叉�?Binary Tree

二叉树的最大深�?

验证二叉搜索�?

二叉树的层序遍历

对称二叉�?

动态规�?Dynamic Programming

�?N 个斐波那契数

爬楼�?

不同路径

最长递增子序�?

零钱兑换

分治 Divide and Conquer

二分查找

快速排�?

数组中的�?K 个最大元�?

最大子数组�?

双指�?Two Pointers

移动�?

判断子序�?

两数之和 II - 输入有序数组

接雨�?