前端如何从零基础准备数据结构与算法

前言:做为一个非科班出身,自学前端过程当中知道学习数据结构与算法的重要性,可是网上推荐的《算法导论》看到厚度和翻了两章就没有动力翻下去了,因而打算从基础性的书本看起,结合本身看的书的总结和网上的参考文章,从最基础的数据结构用JavaScript实现作起,扩展到对应的算法题,一步步从零基础开始准备数据结构与算法。前端


学习计划分为三个步骤:git

  1. 《学习JavaScript数据结构与算法》代码实现,这本书挺推荐的,刚刚出了第三版,扩充了内容和部分ES6实现,也会把其余书中讲解比较好的添加到这部分。
  2. 《剑指Offer》JavaScript实现,这部分网上有人整理挺好的了,本身添加这部分是由于考虑这本书内容挺好,适合进阶学习。
  3. 刷leetcode,打算分类和从简单到困难刷题。


下面是是学习计划的第一步,《学习JavaScript数据结构与算法》实现目录:github

具体代码实现Github地址:github.com/yangyang190…算法

1.Stack(栈)

  • Stack实现数组

  • Stack-进制转换问题数据结构

  • Stack-平衡圆括号问题学习

2.Array(数组)
  • 查找数组中某个数的位置code

  • 使用归并排序合并两个有序数组排序

  • 电话号码的组合问题(公式运算,主要涉及排列组合)递归

3.Queue(队列)
  • Queue实现

  • Queue-deque实现(双端队列)

  • Queue-击鼓传花游戏问题(循环队列)

  • Queue-回文检查器问题(双端队列)

4.LinkedList(链表)
  • 单向链表和双向链表实现

  • 循环链表实现

  • 链表排序问题

  • 环形链表问题

5.Set(集合)
  • Set实现

  • 集合运算(并、交、差、子集,ES5和ES6以及扩展运算符实现)

  • 惟一的摩尔斯密码词问题

  • 两个数组的交集Ⅰ问题

6.Map(字典/映射)
  • Map实现

  • 两个数组的交集Ⅱ问题

7.HashTable(散列表/哈希表)
  • HasbTable实现

  • 散列表处理冲突

  • 字符串中的第一个惟一字符问题

8.递归
  • 计算一个数的阶乘

  • 斐波那契数列

  • 复原IP地址问题

9.Tree(树)
  • 二叉树和二叉搜索树

  • 树的遍历(中序遍历、先序遍历和后序遍历)

  • 搜索树中的值

  • 自平衡树(AVL树和红黑树)


后记:针对前端零基础学习数据结构与算法,建议是翻看《学习JavaScript数据结构与算法》,一步步实现其中的代码,同时能够翻看《个人第一本算法书》和配套APP、《图解算法》、《数据结构与算法图解》,这三本书主要讲解理论和思路,能够比较快速翻看,看完《学习JavaScript数据结构与算法》,就能够看《剑指Offer》,是一个进阶训练,网上有JavaScript版本代码,我会整理到Github项目中,而后再去leetcode,有这样的学习计划,主要是想对从零基础学习数据结构与算法的同窗有个过渡学习的过程,我也会按照这个步骤在Github中更新代码,最后感谢网上无私贡献思路和代码的人。

相关文章
相关标签/搜索