经典算法类面试题挑战
共214个章节
开篇
文档 1 课程综述
文档 2 「学一学」时间复杂度与空间复杂度

知识点: 1.时间复杂度 2.空间复杂度 3.大O表示法

挑战 1 「大厂真题实战」数组中重复的数字
文档 3 「真题解析」数组中重复的数字

知识点: 1.暴力法。 2.利用排序帮助解题。 3.空间换时间思想。

挑战 2 「大厂真题实战」两数之和
文档 4 「真题解析」两数之和

知识点: 1.暴力法。 2.空间换时间思想。

数组(上)
实验 1 「学一学」数组基础通关

知识点: 1.数组基本概念。 2.一维数组和二维数组的创建和访问。 3.算法练习题中常用的数组方法。

挑战 3 「大厂真题实战」替换空格
文档 5 「真题解析」替换空格

知识点: 1.使用API解决问题 2.遍历字符串 3.双指针

挑战 4 「大厂真题实战」二维数组中的查找
文档 6 「真题解析」二维数组中的查找

知识点: 1.二维数组的遍历 2.线性查找

挑战 5 「大厂真题实战」删除有序数组中的重复项
文档 7 「真题解析」删除有序数组中的重复项

知识点: 1.双指针之快慢指针

挑战 6 「大厂真题实战」移动零
文档 8 「真题解析 」移动零

知识点: 1.双指针之快慢指针 2.交换数组元素的两种方法

挑战 7 「大厂真题实战」长度最小的子数组
文档 9 「真题解析」长度最小的子数组

知识点: 1.求最小值或最大值的小技巧 2.滑动窗口

数组(下)
挑战 8 「大厂真题实战」反转字符串数组
文档 10 「真题解析」反转字符串数组

知识点: 1.双指针之对撞指针

挑战 9 「大厂真题实战」两数之和 II
文档 11 「真题解析」两数之和 II

知识点: 1.双指针之对撞指针

挑战 10 「大厂真题实战」移除元素
文档 12 「真题解析」移除元素

知识点: 1.快慢指针 2.对撞指针

挑战 11 「大厂真题实战」有序数组的平方
文档 13 「真题解析」有序数组的平方

知识点: 1.数组sort方法 2.双指针之对撞指针 3.数组unshift方法

挑战 12 「大厂真题实战」三数之和
文档 14 「真题解析」三数之和

知识点: 1.双指针之对撞指针

链表(上)
实验 2 「学一学」链表基础通关

知识点: 1.链表基本概念。 2.链表和数组的区别。 3.链表的代码实现。

挑战 13 「大厂真题实战」从尾到头打印链表
文档 15 「真题解析」从尾到头打印链表

知识点: 1.链表的遍历

挑战 14 「大厂真题实战」删除排序链表重复元素
文档 16 「真题解析」删除排序链表重复元素

知识点: 1.链表的赋值 2.链表的遍历 3.链表的删除

挑战 15 「大厂真题实战」移除链表元素
文档 17 「真题解析」移除链表元素

知识点: 1.链表的赋值 2.链表的遍历 3.虚拟头节点

挑战 16 「大厂真题实战」反转链表
文档 18 「真题解析」反转链表

知识点: 1.链表的赋值 2.链表的遍历

链表(下)
挑战 17 「大厂真题实战」链表的中间节点
文档 19 「真题解析」链表的中间节点

知识点: 1.求链表的长度 2.双指针之快慢指针

挑战 18 「大厂真题实战」删除链表的倒数第 N 个节点
文档 20 「真题解析」删除链表的倒数第 N 个节点

知识点: 1.双指针之快慢指针

挑战 19 「大厂真题实战」合并两个有序链表
文档 21 「真题解析」合并两个有序链表

知识点: 1.链表的遍历和赋值 2.虚拟头节点

挑战 20 「大厂真题实战」环形链表
文档 22 「真题解析」环形链表

知识点: 1.借用额外空间 2.快慢指针

挑战 21 「大厂真题实战」两两交换链表中的节点
文档 23 「真题解析」两两交换链表中的节点

知识点: 1.链表的赋值、遍历和删除 2.虚拟头节点

挑战 22 「大厂真题实战」回文链表
文档 24 「真题解析」回文链表

知识点: 1.链表转数组或字符串 2.反转链表、快慢指针

二分法
实验 3 「学一学」二分法思想

知识点: 1.线性查找和二分查找

挑战 23 「大厂真题实战」二分查找
文档 25 「真题解析」二分查找

知识点: 1.二分查找思想 2.左右指针可访问区间

挑战 24 「大厂真题实战」搜索插入位置
文档 26 「真题解析」搜索插入位置

知识点: 1.二分查找

挑战 25 「大厂真题实战」x 的平方根
文档 27 「真题解析」x 的平方根

知识点: 1.二分查找

栈和队列(上)
文档 28 「学一学」栈和队列基础通关

知识点: 1.栈 2.队列

挑战 26 「大厂真题实战」有效的括号
文档 29 「真题解析」有效的括号

知识点: 1.栈

挑战 27 「大厂真题实战」删除字符串中的所有相邻重复项
文档 30 「真题解析」删除字符串中的所有相邻重复项

知识点: 1.栈

挑战 28 「大厂真题实战」简化路径
文档 31 「真题解析」简化路径

知识点: 1.栈

挑战 29 「大厂真题实战」逆波兰表达式求值
文档 32 「真题解析」逆波兰表达式求值

知识点: 1.栈 2.策略模式 3.位运算取整

栈和队列(下)
挑战 30 「大厂真题实战」用栈实现队列
文档 33 「真题解析」用栈实现队列

知识点: 1.栈 2.队列

挑战 31 「大厂真题实战」用队列实现栈
文档 34 「真题解析」用队列实现栈

知识点: 1.栈 2.队列

挑战 32 「大厂真题实战」最近的请求次数
文档 35 「真题解析」最近的请求次数

知识点: 1.队列

递归
实验 4 「学一学」递归基础通关

知识点: 1.递归基本概念 2.终止条件和递归条件

文档 36 递归大厂真题实战(上)

知识点: 1.递归 2.链表 3.递归条件和终止条件 4.递归辅助函数

文档 37 递归大厂真题实战(下)

知识点: 1.递归 2.链表 3.递归条件和终止条件

排序
挑战 33 「大厂真题实战」数组排序
文档 38 「真题解析」数组排序(上)

知识点: 1.冒泡排序 2.选择排序 3.插入排序

文档 39 「真题解析」数组排序(下)

知识点: 1.归并排序 2.快速排序

树(一)
实验 5 「学一学」树基础通关

知识点: 1.树 2.二叉树 3.二叉搜索树 4.二叉树的遍历

挑战 34 「大厂真题实战」相同的树
文档 40 「真题解析」相同的树

知识点: 1.二叉树 2.递归

挑战 35 「大厂真题实战」对称二叉树
文档 41 「真题解析」对称二叉树

知识点: 1.二叉树 2.递归

挑战 36 「大厂真题实战」二叉树的最大深度
文档 42 「真题解析」二叉树的最大深度

知识点: 1.二叉树 2.递归

挑战 37 「大厂真题实战」二叉树的最小深度
文档 43 「真题解析」二叉树的最小深度

知识点: 1.二叉树 2.递归

挑战 38 「大厂真题实战」翻转二叉树
文档 44 「真题解析」翻转二叉树

知识点: 1.二叉树 2.递归

树(二)
挑战 39 「大厂真题实战」二叉树展开为链表
文档 45 「真题解析」二叉树展开为链表

知识点: 1.二叉树 2.递归

挑战 40 「大厂真题实战」合并二叉树
文档 46 「真题解析」合并二叉树

知识点: 1.二叉树 2.递归

挑战 41 「大厂真题实战」二叉树的最近公共祖先
文档 47 「真题解析」二叉树的最近公共祖先

知识点: 1.二叉树 2.递归

挑战 42 「大厂真题实战」二叉树的直径
文档 48 「真题解析」二叉树的直径

知识点: 1.二叉树 2.递归

挑战 43 「大厂真题实战」另一棵树的子树
文档 49 「真题解析」另一棵树的子树

知识点: 1.二叉树 2.递归

树(三)
挑战 44 「大厂真题实战」平衡二叉树
文档 50 「真题解析」平衡二叉树

知识点: 1.二叉树 2.递归

挑战 45 「大厂真题实战」完全二叉树的节点个数
文档 51 「真题解析」完全二叉树的节点个数

知识点: 1.二叉树 2.递归

挑战 46 「大厂真题实战」二叉树的所有路径
文档 52 「真题解析」二叉树的所有路径

知识点: 1.二叉树 2.递归

挑战 47 「大厂真题实战」路径总和
文档 53 「真题解析」路径总和

知识点: 1.二叉树 2.递归

挑战 48 「大厂真题实战」左叶子之和
文档 54 「真题解析」左叶子之和

知识点: 1.二叉树 2.递归

树(四)
挑战 49 「大厂真题实战」二叉树的层序遍历
文档 55 「真题解析」二叉树的层序遍历

知识点: 1.广度优先遍历

挑战 50 「大厂真题实战」二叉树的右视图
文档 56 「真题解析」二叉树的右视图

知识点: 1.广度优先遍历

挑战 51 「大厂真题实战」二叉树的层平均值
文档 57 「真题解析」二叉树的层平均值

知识点: 1.广度优先遍历

挑战 52 「大厂真题实战」填充每个节点的下一个右侧节点
文档 58 「真题解析」填充每个节点的下一个右侧节点

知识点: 1.广度优先遍历

挑战 53 「大厂真题实战」N 叉树的层序遍历
文档 59 「大厂真题实战」N 叉树的层序遍历

知识点: 1.广度优先遍历

挑战 54 「大厂真题实战」在每个树行中找最大值
文档 60 「真题解析」在每个树行中找最大值

知识点: 1.广度优先遍历

树(五)
挑战 55 「大厂真题实战」验证二叉搜索树
文档 61 「真题解析」验证二叉搜索树

知识点: 1.二叉搜索树

挑战 56 「大厂真题实战」恢复二叉搜索树
文档 62 「真题解析」恢复二叉搜索树

知识点: 1.二叉搜索树

挑战 57 「大厂真题实战」将有序数组转换为二叉搜索树
文档 63 「真题解析」将有序数组转换为二叉搜索树

知识点: 1.二叉搜索树

挑战 58 「大厂真题实战」有序链表转换为二叉搜索树
文档 64 「真题解析」有序链表转换为二叉搜索树

知识点: 1.二叉搜索树 2.链表的中间节点

树(六)
挑战 59 「大厂真题实战」二叉搜索树中第 K 小的元素
文档 65 「真题解析」二叉搜索树中第 K 小的元素

知识点: 1.二叉搜索树

挑战 60 「大厂真题实战」二叉搜索树中的搜索
文档 66 「真题解析」二叉搜索树中的搜索

知识点: 1.二叉搜索树

挑战 61 「大厂真题实战」二叉搜索树中的插入操作
文档 67 「真题解析」二叉搜索树中的插入操作

知识点: 1.二叉搜索树

挑战 62 「大厂真题实战」最大二叉树
文档 68 「真题解析」最大二叉树

知识点: 1.二叉搜索树

贪心
文档 69 「学一学」贪心算法

知识点: 1.贪心算法

挑战 63 「大厂真题实战」柠檬水找零
文档 70 「真题解析」柠檬水找零

知识点: 1.贪心算法

挑战 64 「大厂真题实战」跳跃游戏
文档 71 「真题解析」跳跃游戏

知识点: 1.贪心算法

挑战 65 「大厂真题实战」分发饼干
文档 72 「真题解析」分发饼干

知识点: 1.贪心算法

挑战 66 「大厂真题实战」买卖股票的最佳时机
文档 73 「真题解析」买卖股票的最佳时机

知识点: 1.贪心算法

回溯(上)
文档 74 「学一学」回溯和剪枝

知识点: 1.回溯算法 2.剪枝

挑战 67 「大厂真题实战」电话号码的字母组合
文档 75 「真题解析」电话号码的字母组合

知识点: 1.回溯算法

挑战 68 「大厂真题实战」组合总和
文档 76 「真题解析」组合总和

知识点: 1.回溯算法

挑战 69 「大厂真题实战」组合
文档 77 「真题解析」组合

知识点: 1.回溯算法

挑战 70 「大厂真题实战」全排列
文档 78 「真题解析」全排列

知识点: 1.回溯算法

挑战 71 「大厂真题实战」全排列 II
文档 79 「真题解析」全排列 II

知识点: 1.回溯算法

回溯(下)
挑战 72 「大厂真题实战」分割回文串
文档 80 「真题解析」分割回文串

知识点: 1.回溯算法

挑战 73 「大厂真题实战」复原 IP 地址
文档 81 「真题解析」复原 IP 地址

知识点: 1.回溯算法

挑战 74 「大厂真题实战」子集
文档 82 「真题解析」子集

知识点: 1.回溯算法

挑战 75 「大厂真题实战」单词搜索
文档 83 「真题解析」单词搜索

知识点: 1.回溯算法

挑战 76 「大厂真题实战」n 皇后
文档 84 「真题解析」n 皇后

知识点: 1.回溯算法

动态规划(一)
挑战 77 「大厂真题实战」斐波那契数
文档 85 「真题解析」斐波那契数

知识点: 1.动态规划

挑战 78 「大厂真题实战」爬楼梯
文档 86 「真题解析」爬楼梯

知识点: 1.动态规划

挑战 79 「大厂真题实战」使用最小花费爬楼梯
文档 87 「真题解析」使用最小花费爬楼梯

知识点: 1.动态规划

挑战 80 「大厂真题实战」不同路径
文档 88 「真题解析」不同路径

知识点: 1.动态规划

挑战 81 「大厂真题实战」不同路径 II
文档 89 「真题解析」不同路径 II

知识点: 1.动态规划

动态规划(二)
挑战 82 「大厂真题实战」打家劫舍
文档 90 「真题解析」打家劫舍

知识点: 1.动态规划

挑战 83 「大厂真题实战」打家劫舍 II
文档 91 「真题解析」打家劫舍 II

知识点: 1.动态规划

挑战 84 「大厂真题实战」打家劫舍 III
文档 92 「真题解析」打家劫舍 III

知识点: 1.动态规划

动态规划(三)
挑战 85 「大厂真题实战」买卖股票的最佳时机
文档 93 「真题解析」买卖股票的最佳时机

知识点: 1.动态规划

挑战 86 「大厂真题实战」买卖股票的最佳时机 II
文档 94 「真题解析」买卖股票的最佳时机 II

知识点: 1.动态规划

挑战 87 「大厂真题实战」买卖股票的最佳时机 III
文档 95 「真题解析」买卖股票的最佳时机 III

知识点: 1.动态规划

挑战 88 「大厂真题实战」买卖股票的最佳时机含手续费
文档 96 「真题解析」买卖股票的最佳时机含手续费

知识点: 1.动态规划

动态规划(四)
挑战 89 「大厂真题实战」最长公共子序列
文档 97 「真题解析」最长公共子序列

知识点: 1.动态规划

挑战 90 「大厂真题实战」判断子序列
文档 98 「真题解析」判断子序列

知识点: 1.双指针 2.动态规划

挑战 91 「大厂真题实战」最长递增子序列
文档 99 「真题解析」最长递增子序列

知识点: 1.动态规划

挑战 92 「大厂真题实战」最长连续递增序列
文档 100 「真题解析」最长连续递增序列

知识点: 1.动态规划

挑战 93 「大厂真题实战」不同的子序列
文档 101 「真题解析」不同的子序列

知识点: 1.动态规划

动态规划(五)
挑战 94 「大厂真题实战」零钱兑换
文档 102 「真题解析」零钱兑换

知识点: 1.动态规划

挑战 95 「大厂真题实战」零钱兑换 II
文档 103 「真题解析」零钱兑换 II

知识点: 1.动态规划

挑战 96 「大厂真题实战」最大子数组和
文档 104 「真题解析」最大子数组和

知识点: 1.动态规划

挑战 97 「大厂真题实战」两个字符串的删除操作
文档 105 「真题解析」两个字符串的删除操作

知识点: 1.动态规划

其他
挑战 98 「大厂真题实战」2 的幂
文档 106 「真题解析」2 的幂

知识点: 1.位运算

挑战 99 「大厂真题实战」只出现一次的数字
文档 107 「真题解析」只出现一次的数字

知识点: 1.位运算

文档 108 「学一学」位运算

知识点: 1.位运算 2.权限设计方案 3.vue3中的位运算

挑战 100 「大厂真题实战」LRU 缓存
文档 109 「真题解析」LRU 缓存

知识点: 1.LRU缓存

热门手写类面试题挑战
共77个章节
数据类型(上)
挑战 101 「大厂真题实战」实现类型判断
实验 6 「真题解析」实现类型判断

知识点: 1.JavaScript数据类型 2.判断JavaScript数据类型的几种方法

挑战 102 「大厂真题实战」实现 instanceof
实验 7 「真题解析」实现 instanceof

知识点: 1.原型和原型链 2.instanceof原理

挑战 103 「大厂真题实战」实现 Object.is
实验 8 「真题解析」实现 Object.is

知识点: 1.==、===和Objectis的区别 2.JS类型转换机制

数据类型(下)
挑战 104 「大厂真题实战」实现大整数相加
文档 110 「真题解析」实现大整数相加

知识点: 1.模拟竖式加法运算 2.BigInt 3.小数计算精度问额 4.四舍五入问题

挑战 105 「大厂真题实战」实现 lodash 的 get 方法
文档 111 「真题解析」实现 lodash 的 get 方法

知识点: 1.lodashget方法 2.可选链

挑战 106 「大厂真题实战」判断对象是否为空
文档 112 「真题解析」判断对象是否为空

知识点: 1.forin 2.Objectkeys() 3.JSONstringify()

挑战 107 「大厂真题实战」实现深拷贝
实验 9 「真题解析」实现深拷贝

知识点: 1.浅拷贝 2.深拷贝

数组
挑战 108 「大厂真题实战」生成数组
文档 113 「真题解析」生成数组

知识点: 1.Arrayfrom 2.伪数组转数组

挑战 109 「大厂真题实战」数组去重
文档 114 「真题解析」数组去重

知识点: 1.Set 2.对象数组去重

挑战 110 「大厂真题实战」实现数组扁平化
文档 115 「真题解析」实现数组扁平化

知识点: 1.flat 2.递归

挑战 111 「大厂真题实战」实现 reduce
文档 116 「真题解析」实现 reduce

知识点: 1.reduce原理 2.reduce的使用场景

字符串(上)
文档 117 「正则表达式导学」

知识点: 1.正则表达式

实验 10 「学一学」正则表达式(一)

知识点: 1.简单模式 2.特殊字符 3.转义字符 4.字符集

实验 11 「学一学」正则表达式(二)

知识点: 1.特殊字符 2.量词

实验 12 「学一学」正则表达式(三)

知识点: 1.分组 2.分支 3.断言 4.查找

字符串(下)
挑战 112 「大厂真题实战」实现 repeat
文档 118 「真题解析」实现 repeat

知识点: 1.repeat 2.二分法

挑战 113 「大厂真题实战」实现模板字符串解析
文档 119 「真题解析」实现模板字符串解析

知识点: 1.模板字符串 2.正则表达式

挑战 114 「大厂真题实战」实现 HTML 转义
文档 120 「真题解析」实现 HTML 转义

知识点: 1.HTML转义 2.HTML反转义

挑战 115 「大厂真题实战」查找文章中出现次数最多的单词
文档 121 「真题解析」查找文章中出现次数最多的单词

知识点: 1.正则 2.reduce 3.sort

对象(上)
挑战 116 「大厂真题实战」解析 url 参数为对象
文档 122 「真题解析」解析 url 参数为对象

知识点: 1.url参数

挑战 117 「大厂真题实战」判断两个对象是否相等
文档 123 「真题解析」判断两个对象是否相等

知识点: 1.JSONstringify 2.引用类型

挑战 118 「大厂真题实战」实现对象扁平化
文档 124 「真题解析」实现对象扁平化

知识点: 1.递归 2.正则

挑战 119 「大厂真题实战」实现 new 操作符
文档 125 「真题解析」实现 new 操作符

知识点: 1.new 2.原型链 3.this

对象(下)
挑战 120 「大厂真题实战」广度优先遍历 DOM 树
文档 126 「真题解析」广度优先遍历 DOM 树

知识点: 1.广度优先遍历 2.多叉树

挑战 121 「大厂真题实战」深度优先遍历 DOM 树
文档 127 「真题解析」深度优先遍历 DOM 树

知识点: 1.深度优先遍历 2.多叉树

挑战 122 「大厂真题实战」列表整理为树形结构
文档 128 「真题解析」列表整理为树形结构

知识点: 1.树形结构 2.空间换时间 3.递归

函数(上)
实验 13 「学一学」this

知识点: 1.this 2.call、apply、bind

挑战 123 「大厂真题实战」实现 call 函数
文档 129 「真题解析」实现 call 函数

知识点: 1.call原理 2.call使用场景

挑战 124 「大厂真题实战」实现 apply 函数
文档 130 「真题解析」实现 apply 函数

知识点: 1.apply原理 2.apply使用场景

挑战 125 「大厂真题实战」实现 bind 函数
文档 131 「真题解析」实现 bind 函数

知识点: 1.bind原理 2.bind使用场景

函数(下)
挑战 126 「大厂真题实战」实现自增函数
文档 132 「真题解析」实现自增函数

知识点: 1.闭包 2.作用域和作用域链 3.函数的本质是对象

文档 133 「学一学」闭包的应用场景(上)

知识点: 1.闭包 2.立即执行函数 3.缓存 4.单例模式

文档 134 「学一学」闭包的应用场景(下)

知识点: 1.柯里化函数 2.偏函数 3.webpack打包 4.jquery和lodash中的闭包

挑战 127 「大厂真题实战」实现 compose 函数
文档 135 「真题解析」实现 compose 函数

知识点: 1.compose 2.pipe

挑战 128 「大厂真题实战」实现防抖函数
文档 136 「真题解析」实现防抖函数

知识点: 1.函数防抖 2.函数节流

异步(上)
实验 14 「学一学」异步

知识点: 1.同步与异步 2.promise 3.async/await

实验 15 「学一学」事件循环

知识点: 1.事件循环 2.任务队列 3.宏任务与微任务

实验 16 「大厂真题实战」Promise 相关

知识点: 1.Promise

实验 17 「大厂真题实战」事件循环相关

知识点: 1.Promise 2.事件循环

挑战 129 「大厂真题实战」setTimeout 实现 setInterval
文档 137 「真题解析」setTimeout 实现 setInterval

知识点: 1.setInterval 2.setTimeout

异步(下)
挑战 130 「大厂真题实战」实现 Promise(上)
文档 138 「真题解析」实现 Promise(上)

知识点: 1.Promise的三种状态及状态变化 2.resolve和reject 3.then和catch

挑战 131 「大厂真题实战」实现 Promise(下)
文档 139 「真题解析」实现 Promise(下)

知识点: 1.Promiseresolve 2.Promisereject 3.Promiseall 4.Promiserace

挑战 132 「大厂真题实战」Promise 限制异步操作并发数
文档 140 「真题解析」Promise 限制异步操作并发数

知识点: 1.Promise 2.队列

挑战 133 「大厂真题实战」实现 async 函数
文档 141 「真题解析」实现 async 函数

知识点: 1.async/await 2.Generator

课程教师

王楷 共发布过 1 门课程

某大型物联网国企前端工程师,算法深度爱好者,对于算法面试有丰富经验,曾收获多家大厂 offer,如知名大厂字节跳动、腾讯、华为、百度、CVTE等。

查看老师的所有课程 >
开通会员,即刻开始学习
加入社群
加入编程交流社群