JavaScript数据结构与算法
学习了lewis老师的课程
在这里梳理、总结、分享
希望和各位大佬一起交流与学习
lj1530562965
这个作者很懒,什么都没留下…
展开
-
(一)数据结构与算法简介
数据结构与算法简介目标掌握数据结构与算法的理论知识补齐算法短板梳理前端与算法结合点,不再纸上谈兵,将算法用于实战三部曲理论:数据结构与算法的特点、应用场景等等刷题:做一些算法题,推荐使用LeetCode实战:在工作中与数据额结构/算法打交道刷题刷题网站:推荐使用LeetCode刷题顺序:推荐按照类型刷图,相当于集中训练重点关注:通用套路、时间/空间复杂度分析和优化实战前端与数据结构/算法的结合点在工作中与数据结构/算法大交道数据结构与算法是什么数据结构:计算机存储、组织数原创 2020-09-14 14:39:53 · 309 阅读 · 0 评论 -
(二) 时间/空间复杂度计算
时间/空间复杂度计算时间复杂度是什么?O(1)O(n)O(1)+O(n)=O(n)O(n)*O(n)=O(n^2)O(logN)空间复杂度是什么?O(1)O(n)O(n^2)思考题时间复杂度是什么?一个函数,用大O表示,比如O(1)、O(n)、O(logN)…定性(大概)描述该算法的运行时间O(1)let i = 0;i += 1执行了一次O(n)for (let i = 0; i < n; i += 1){ console.log(i)}执行了n次O(1)+O(n)=原创 2020-09-14 15:06:59 · 185 阅读 · 0 评论 -
(三)数据结构之“栈”
数据结构之“栈”栈是什么栈的应用场景场景一:十进制转二进制场景二:有效的括号场景三:函数调用堆栈JS中的函数调用堆栈LeetCode:20.有效的括号LeetCode:144.二叉树的前序遍历技术要点思考题栈是什么一个后进先出的数据结构JavaScript中没有栈,但可以用Array实现栈的所有功能const stack = [];stack.push(1);stack.push(2);const item1 = stack.pop();const item2 = stack.pop();原创 2020-09-14 15:37:03 · 302 阅读 · 0 评论 -
(四)数据结构之“队列”
数据结构之“队列”队列是什么?队列的应用场景场景一:食堂排队打饭场景二:JS异步中的任务队列场景三:计算最近请求次数LeetCode:933.最近的请求次数前端与队列:JS异步中的任务队列技术要点思考题队列是什么?一个先进先出的数据结构JavaScript中没有队列,但可以用Array实现队列的所有功能const queue = [];queue.push(1);queue.push(2);const item1 = queue.shift();const item2 = queue.sh原创 2020-09-14 16:02:56 · 311 阅读 · 0 评论 -
(五)数据结构之“链表”
输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL原创 2020-09-21 15:16:49 · 246 阅读 · 1 评论 -
(六)数据结构之“集合”
数据结构之“集合”集合是什么?LeetCode:349.两个数组的交集前端与集合:使用ES6的Set思考题集合是什么?一种无序且唯一的数据结构ES6中有集合,名为Set集合的常用操作:去重、判断某元素是否在集合中、求交集// 去重const arr = [1, 1, 2, 2];const arr2 = [...new Set(arr)];// 判断元素是否在集合中const set = new Set(arr);const has = set.has(3);// 求交集cons原创 2020-09-21 16:16:15 · 523 阅读 · 0 评论 -
(七)数据结构之“字典”
数据结构之“字典”字典是什么?LeetCode:349.两个数组的交集LeetCode:20.有效的括号LeetCode:1.两数之和LeetCode:3.无重复字符的最长子串LeetCode:76.最小覆盖子串思考题字典是什么?与集合类似,字典也是一种存储唯一值的数据结构,但它是以键值对的形式来存储ES6中有字典,名为Map字典的常用操作:键值对的增删改查const m = new Map();// 增m.set('a', 'aa');m.set('b', 'bb');// 删m.原创 2020-09-22 15:30:52 · 422 阅读 · 0 评论 -
(八)数据结构之“树”
数据结构之“树”树是什么?什么是深度/广度优先遍历?深度优先遍历算法口诀广度优先遍历算法口诀二叉树的先中后序遍历二叉树是什么先序遍历算法口诀(根 > 左 > 右)中序遍历算法口诀(左 > 根 > 右)后序遍历算法口诀(左 > 右 > 根)树是什么?一种分层数据的抽象模型。前端工作中常见的树包括:DOM树、级联选择、树形控件…JS中没有树,但是可以用Object和Array构建树树的常用操作:深度/广度优先遍历、先中后序遍历什么是深度/广度优先遍原创 2020-09-23 14:53:21 · 236 阅读 · 0 评论 -
(九)数据结构之“图”
数据结构之“图”图是什么图的常用操作图的深度/广度优先遍历什么是深度/广度优先遍历深度优先遍历算法口诀广度优先遍历算法口诀LeetCode:65.有效数字LeetCode:417.太平洋大西洋水流问题LeetCode:133.克隆图思考题图是什么图是网络结构的抽象模型,是一组由边连接的节点图可以表示任何二元关系,比如道路、航班….JS中没有图,但是可以用Object和Array构建图图的表示法:邻接矩阵、邻接表、关联矩阵…图的常用操作深度优先遍历广度优先遍历图的深度/广度优原创 2020-09-23 23:28:49 · 227 阅读 · 0 评论 -
(十)数据结构之“堆”
数据结构之“堆”堆是什么?JS中的堆堆的应用第K个最大元素LeetCode:215.数组中的第K个最大元素LeetCode:347.前K个高频元素LeetCode:23.合并K个排序链表思考题堆是什么?堆是一种特殊的完全二叉树所有的节点都大于等于(最大堆)或小于等于(最小堆)它的子节点JS中的堆JS中通常用数组表示堆左侧子节点的位置是2 * index + 1右侧子节点的位置是2 * index + 2父节点位置是( index - 1 ) / 2堆的应用堆能高效、快速地找出最大值和原创 2020-09-24 14:45:12 · 240 阅读 · 0 评论 -
(十一)进阶算法之“搜索排序”
进阶算法之“搜索排序”排序和搜索简介排序和搜索是什么?JS中的排序和搜索排序算法搜索算法Javascript实现:冒泡排序Javascript实现:选择排序Javascript实现:插入排序Javascript实现:归并排序Javascript实现:快速排序Javascript实现:顺序搜索Javascript实现:二分搜索LeetCode:21.合并两个有序链表LeetCode:374.猜数字大小思考题排序和搜索简介排序和搜索是什么?排序:把某个乱序的数组变成升序或者降序的数组搜索:找出数组中某个原创 2020-09-24 15:44:33 · 582 阅读 · 0 评论 -
(十二)算法设计思想之“分而治之”
算法设计思想之“分而治之”原创 2020-09-24 21:06:47 · 781 阅读 · 0 评论 -
(十三)算法设计思想之“动态规划”
算法设计思想之“动态规划”原创 2020-09-24 22:39:48 · 216 阅读 · 0 评论 -
(十四)算法设计思想之“贪心算法”
算法设计思想之“贪心算法”原创 2020-09-24 22:55:42 · 279 阅读 · 0 评论 -
(十五)算法设计思想之“回溯算法”
算法设计思想之“回溯算法”原创 2020-09-24 23:19:17 · 396 阅读 · 0 评论