这门课的主题很明确:用 JavaScript 把数据结构与算法真正写一遍,并把它用在面试和日常业务代码里。它不是讲框架、不讲工程化,也不教你写页面,而是解决一个很具体的问题——面试时被问到数组去重的最优解、手写一个 LRU、判断链表有没有环、求最长无重复子串这类题,你能不能当场想清楚、写出来、说清复杂度。

它适合什么基础的人

前提是你能读懂 ES6 的语法,写过箭头函数、解构、class,知道 Map 和 Set 大概是什么。如果你只是刚学完变量和循环,直接进来会有点吃力,因为课程几乎不花篇幅补语言基础。反过来,如果你已经刷过几十道题,但每次都是看题解、背模板,遇到变形就卡住,这门课的价值会更大——它把每种结构为什么存在、什么场景该用它讲在前面,而不是上来就贴答案。转行者如果目标是前端岗位,也建议先把 JS 基础打牢再进算法部分,否则容易变成抄代码。

建议先看哪几块,怎么配合练习

按顺序走比较稳:先过数组、栈、队列、链表、集合与字典这一层,这是后面所有题的地基;再进树和堆,重点是二叉树的几种遍历写法;最后才是图、排序和算法设计思想。贪心、动态规划这类思想模块放在后面看,因为它们依赖前面的结构直觉。看视频时不要只跟着敲,每讲完一个结构,先自己在编辑器里从零写一遍增删查改,再去看对应的 LeetCode 题。资料里的题解图和思考题建议在动手之后再对照,先看会削弱你自己的推导过程。每道题写完后加一句注释:时间复杂度是多少、为什么选这个结构,这个习惯在面试口述时非常有用。

学完能独立做什么

比较现实的目标是:面对前端面试中中等难度的算法题,你能独立判断该用哪种结构、写出可运行的代码、并解释时间与空间开销;能手写常见工具函数,比如深拷贝、防抖节流里涉及的数组与对象处理、简易的缓存淘汰逻辑;能读懂开源库里基于链表、栈、树实现的部分,而不是绕过去。它不会让你一夜之间变成竞赛选手,但能让你在面试里不再靠背题。

需要提醒的是,算法能力靠的是重复输出,不是看完。这门课的资料更适合当作练习的对照答案和思路索引,真正的进度取决于你独立写了多少题。如果你的面试时间只剩一两周,建议优先看数组、链表、树和排序这几块,贪心和动态规划可以放到拿到面试机会之后再补。

课程目录

课程目录97 集
  • 📁 第14章算法设计思想之“贪心算法” 第14章算法设计思想之“贪心算法”资料.png [493.5 KB] README.md [103.0 B] 14-5思考题.png [87.5 KB] 14-3LeetCode:122.买卖股票的最佳时机II.mp4
  • [51.7 MB] 14-4贪心算法-章节总结.mp4
  • [7.3 MB] 14-2LeetCode:455.分饼干.mp4
  • [58.3 MB] 14-1贪心算法简介.mp4
  • [40.2 MB] 📁 第12章算法设计思想之“分而治之” 第12章算法设计思想之“分而治之”说明.png [493.5 KB] 12-4LeetCode:100.相同的树.mp4
  • [49.0 MB] 12-1分而治之简介.mp4
  • [28.0 MB] 12-7思考题.png [90.2 KB] 12-3LeetCode:226.翻转二叉树.mp4
  • [65.2 MB] 12-2LeetCode:374.猜数字大小.mp4
  • [51.4 MB] README.md [103.0 B] 12-5LeetCode:101.对称二叉树.mp4
  • [46.3 MB] 12-6分而治之-章节总结.mp4
  • [7.1 MB] 📁 资料 📁 js-algorithm 📁 stack README.md [103.0 B] index.js [102.0 B] callStack.js [109.0 B] 📁 linkedList README.md [103.0 B] json.js [142.0 B] index.js [296.0 B] 📁 graph bfs.js [263.0 B] dfs.js [229.0 B] graph.js [96.0 B] README.md [103.0 B] 📁 set set.js [475.0 B] index.js [260.0 B] README.md [103.0 B] 📁 map index.js [129.0 B] README.md [103.0 B] 📁 tree bt.js [506.0 B] README.md [103.0 B] bfs.js [849.0 B] preorder.js [470.0 B] postorder.js [621.0 B] inorder.js [516.0 B] dfs.js [718.0 B] json.js [207.0 B] 📁 queue index.js [106.0 B] README.md [103.0 B] 资料文档.zip
  • [1.8 MB] README.md [103.0 B] 📁 第8章数据结构之“树” 第8章数据结构之“树”说明.png [493.5 KB] 8-3二叉树的先中后序遍历.mp4
  • [45.2 MB] 8-8LeetCode:94.二叉树的中序遍历.mp4
  • [29.7 MB] 8-5LeetCode:104.二叉树的最大深度.mp4
  • [30.2 MB] 8-12树-章节总结.mp4
  • [2.3 MB] 8-11前端与树:渲染Antd中的树组件.mp4
  • [15.0 MB] 8-4二叉树的先中后序遍历(非递归版).mp4
  • [105.8 MB] README.md [103.0 B] 8-2深度与广度优先遍历.mp4
  • [39.1 MB] 8-1树简介.mp4
  • [7.3 MB] 8-9LeetCode:112.路径总和.mp4
  • [31.0 MB] 8-7LeetCode:102.二叉树的层序遍历.mp4
  • [46.3 MB] 8-6LeetCode:111.二叉树的最小深度.mp4
  • [21.1 MB] 8-10前端与树:遍历JSON的所有节点值.mp4
  • [20.5 MB] 📁 第5章数据结构之“链表” 第5章数据结构之“链表”说明.png [493.5 KB] 5-7前端与链表:JS中的原型链.mp4
  • [65.9 MB] 5-9链表-章节总结.mp4
  • [3.2 MB] 5-1链表简介.mp4
  • [24.0 MB] README.md [103.0 B] 5-6LeetCode:141.环形链表.mp4
  • [28.7 MB] 5-5LeetCode:83.删除排序链表中的重复元素.mp4
  • [18.2 MB] 5-4LeetCode:2.两数相加.mp4
  • [44.4 MB] 5-2LeetCode:237.删除链表中的节点.mp4
  • [12.8 MB] 5-8前端与链表:使用链表指针获取JSON的节点值.mp4
  • [11.9 MB] 5-3LeetCode:206.反转链表.mp4
  • [21.7 MB] 📁 第2章时间空间复杂度计算 第2章时间空间复杂度计算资料.png [493.5 KB] 2-1时间复杂度计算.mp4
  • [13.8 MB] README.md [103.0 B] 2-2空间复杂度计算.mp4
  • [3.8 MB] 📁 第9章数据结构之“图” 第9章数据结构之“图”资料.zip
  • [1.8 MB] 9-6图-章节总结.mp4
  • [3.1 MB] 9-1图简介.mp4
  • [10.3 MB] 9-4LeetCode:417.太平洋大西洋水流问题.mp4
  • [78.9 MB] 9-2图的深度广度优先遍历.mp4
  • [36.7 MB] 9-3LeetCode:65.有效数字.mp4
  • [50.4 MB] README.md [103.0 B] 9-5LeetCode:133.克隆图.mp4
  • [113.7 MB] 📁 第4章数据结构之“队列” 第4章数据结构之“队列”文档.zip
  • [1.8 MB] 4-3LeetCode:933.最近的请求次数.mp4
  • [22.1 MB] 4-1队列简介.mp4
  • [13.5 MB] 4-4前端与队列:JS异步中的任务队列.mp4
  • [7.8 MB] 4-5队列-章节总结.mp4
  • [2.7 MB] 4-2什么场景用队列.mp4
  • [11.1 MB] README.md [103.0 B] 📁 第6章数据结构之“集合” 第6章数据结构之“集合”说明.zip
  • [1.8 MB] 6-1集合简介.mp4
  • [21.3 MB] 6-4集合章节总结.mp4
  • [1.9 MB] 6-3前端与集合:使用ES6中Set.mp4
  • [47.4 MB] README.md [103.0 B] 6-2LeetCode:349.两个数组的交集.mp4
  • [20.3 MB] 📁 第3章数据结构之“栈” 第3章数据结构之“栈”必看.zip
  • [1.8 MB] 3-2什么场景下用栈.mp4
  • [13.7 MB] README.md [103.0 B] 3-3LeetCode:20.有效的括号.mp4
  • [35.0 MB] 3-4前端与栈:JS中的函数调用堆栈.mp4
  • [15.9 MB] 3-1栈简介.mp4
  • [13.9 MB] 3-5栈-章节总结.mp4
  • [3.1 MB] 📁 第13章算法设计思想之“动态规划” 第13章算法设计思想之“动态规划”说明.png [493.5 KB] 13-5思考题.png [90.8 KB] 13-4动态规划-章节总结.mp4
  • [8.2 MB] 13-3LeetCode:198.打家劫舍.mp4
  • [97.2 MB] 13-2LeetCode:70.爬楼梯.mp4
  • [75.2 MB] 13-1动态规划简介.mp4
  • [29.0 MB] 📁 第15章算法设计思想之“回溯算法” 第15章算法设计思想之“回溯算法”文档.zip
  • [1.8 MB] 15-1回溯算法简介.mp4
  • [29.6 MB] 15-3LeetCode:78.子集.mp4
  • [70.9 MB] 15-5回顾与总结.mp4
  • [42.0 MB] README.md [103.0 B] 15-6思考题.png [88.3 KB] 15-4回溯算法-章节总结.mp4
  • [14.0 MB] 15-2LeetCode:46.全排列.mp4
  • [80.2 MB] 📁 第7章数据结构之“字典” 第7章数据结构之“字典”文档.zip
  • [1.8 MB] 7-5LeetCode:3.无重复字符的最长子串.mp4
  • [33.8 MB] 7-2LeetCode:349.两个数组的交集.mp4
  • [21.7 MB] 7-7字典-章节总结.mp4
  • [3.0 MB] README.md [103.0 B] 7-1字典简介.mp4
  • [18.7 MB] 7-6LeetCode:76.最小覆盖子串.mp4
  • [54.7 MB] 7-4LeetCode:1.两数之和.mp4
  • [19.8 MB] 7-3LeetCode:20.有效的括号.mp4
  • [26.0 MB] 📁 第1章数据结构与算法简介 README.md [103.0 B] 1-2数据结构与算法简介.mp4
  • [12.8 MB] 1-1课程介绍.mp4
  • [27.7 MB] 1-3如何刷LeetCode?.mp4
  • [120.7 MB] 📁 第11章进阶算法之“搜索排序” 11-4JavaScript实现:插入排序.mp4
  • [84.4 MB] 11-9LeetCode:21.合并两个有序链表.mp4
  • [69.1 MB] 11-7JavaScript实现:顺序搜索.mp4
  • [23.3 MB] 11-5JavaScript实现:归并排序.mp4
  • [101.9 MB] README.md [103.0 B] 11-2JavaScript实现:冒泡排序.mp4
  • [74.0 MB] 11-6JavaScript实现:快速排序.mp4
  • [76.5 MB] 11-10LeetCode:374.猜数字大小慕课网2020-07-182204.mp4
  • [55.0 MB] 11-11排序与搜索-章节总结慕课网2020-07-182207.mp4
  • [11.4 MB] 11-1排序和搜索简介.mp4
  • [14.3 MB] 11-8JavaScript实现:二分搜索.mp4
  • [70.3 MB] 11-12思考题.png [96.3 KB] 11-3JavaScript实现:选择排序.mp4
  • [74.6 MB] 📁 第10章数据结构之“堆” 10-4LeetCode:347.前K个高频元素.mp4
  • [76.6 MB] 10-2JavaScript实现:最小堆类.mp4
  • [83.1 MB] 10-1堆简介.mp4
  • [15.0 MB] 10-6堆-章节总结.mp4
  • [3.0 MB] README.md [103.0 B] 10-5LeetCode:23.合并K个排序链表.mp4
  • [52.1 MB] 10-3LeetCode:215.数组中的第K个最大元素.mp4
  • [23.5 MB] 适合人群 前端开发者 求职者 算法爱好者 学习收获 掌握核心算法 提升面试技巧 解决实际编程问题 祝您学习愉快! 学有所成,前程似锦!