零基础的我如何准备算法,前端算法入门

246 阅读5分钟

前言

作为一个拥抱变化已三年多的前端小开发,从前没有好好重视算法,深感惭愧太惭愧。随着进入前端行业的精英们越来越多,出来工作,总是要好好学习的,希望能跟大家一起进步 👍~

这篇是我自己总结:跟大家分享算法入门的路径和攻略还有一些心得,与同为零基础小白们一同升级打怪,看完这篇相信你可以有一些方向。

首先明确了解算法重要⚠️,那我要怎么准备?如何开始?刷题的方式?前端,用js/ts刷吗?leetcode上题目那么多,是精选top100还是follow剑指offer,从leetcode排序简单开始刷题吗?还是找个视频跟着刷???? 不知道你们有没有与我一样的迷茫,如果有的话😔,继续往下看……

如何开始

以下是我的行动路径

  1. 用一周时间进行基础理论补习。首先需要对数据结构和算法的定义、分类做一个全面的理解。
  2. 用1~3天明确刷题路径。多了解有哪些刷题方式,有哪些题目,看掘金、b站、leetcode。
  3. 开始学习计划。开始认真刷题,每天一两个小时。
  4. 定期总结回顾

关于学习,相信大家都有不同的方式,选择适合自己,自己也能坚持下去的,我觉得可以了,一起加油加油呀💕

1.前置的基础学习

开始刷题前,首先是需要先学习理论基础,得先了解先认识都有什么。这部分理论基础我是一个概念去自习学习,掘金上找文章看,或者b站上搜相关的知识点,也看了图灵《学习JavaScript数据结构与算法》

我是分两个方面:1.复杂度分析 2.了解10个数据结构和10个算法。

复杂度分析

为什么要进行算法分析?

为了预测算法的优劣,可以从算法所需的资源运行时间衡量,

主要还是从算法所占用的「时间」和「空间」两个维度去考量。

  • 时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。
  • 空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。

时间复杂度

大O符号表示法 」,即 T(n) = O(f(n))

 其中f(n) 表示每行代码执行次数之和,而 O 表示正比例关系,这个公式的全称是:算法的渐进时间复杂度。

空间复杂度

空间复杂度是对一个算法在运行过程中临时占用存储空间大小的一个量度,反映的是一个趋势,用 S(n) 来定义。

相关连接

知识点掌握(10数据结构和10算法)

这几个知识点,一定要逐个学习它的定义和应用,知道是什么!!!!

  • 10个数据结构

    • 数组
    • 链表
    • 队列
    • 散列表
    • 二叉树
    • 跳表
  • 10个算法

    • 递归
    • 排序
    • 二分查找
    • 搜索
    • 哈希算法
    • 贪心算法
    • 分治算法
    • 回溯算法
    • 动态规划
    • 字符串匹配算法

这部分内容太多:我整理在语雀文档中,后续整理完成再更新到掘金,想看的可以查看

2.明确刷题路径并制定学习计划

当了解了一些基础,如何刷题才能收益最大是我们要考虑的问题,怎么刷呢?刷的方式有很多,我用了好几天的时间去寻找哪个方式适合我,选择适合自己的level。所以在明确刷题路径上,我给到的建议是,不要一开始盲目开始刷题,先多看看,多了解。

很多方式如:

  • 在b站、极客、慕课上找视频📺,跟着视频刷
  • 掘金上找个大牛🐮的专栏,跟着总结分类刷
  • 微信公众号,小程序,打卡刷题
  • 力扣官网,玩转官网,跟着题库或分类或打卡刷题
  • 其他

经过几天的寻找,作为入门,我选择:力扣->题库->三周攻克「数据结构」/20天「算法」刷题计划 进行打卡刷题。每天2~3题,会分类简单和中等。

image.png

有了刷题路径,每天要坚持完成当天的题目,对于遇到的题型,学习计划上都有分类,可以通过分类先去学习相应的解法,然后通过自己思考去解决,刚开始一定要一定要每道题都理解它!!!而不是为了完成直接复制答案!!!!

不理解的我们一起讨论。

3.整理总结

完成一个计划后,需要规律进行总结,每种类型的题目肯定是存在一定规律的,后续我也会分享自己的总结。

当我入门练习完成后,再制定后续的学习计划……

最后看看自己已解答的列表,也有一丝丝的成就感。

最后

跟我一起学习吧