摘要:很多前端同学在看到数据结构和算法后会有一定的抵触心理,或者尝试去练习,但是被难倒,从而放弃。本文选择的数据结构和算法的类别均是出现频率最高,以及应用最广的类别。面试这是非常现实的一点,也是很多前端学习数据结构和算法的原因。
一、导读
据我了解,前端程序员有相当一部分对“数据结构”和“算法”的基础概念都不是很清晰,这直接导致很多人在看到有关这部分的内容就会望而却步。
实际上,当你了解了“数据结构”和“算法”存在的真正意义,以及一些实际的应用场景,对它有了一个整体的认知之后,你可能会对它产生强烈的兴趣。当然,它带将带给你的收益也是相当可观的。
很多前端同学在看到“数据结构”和“算法”后会有一定的抵触心理,或者尝试去练习,但是被难倒,从而放弃。
这很大一部分原因是因为你还不够了解学习他们的意义,或者没有掌握合理的练习方法。
实际上,当你有了一定的目的性,并且有了合理的练习方法,再来学习这部分内容会变得得心应手。
å
在本文中,我就来分享一下我学习“数据结构”和“算法”的一些经验和方法。
后面我也会针对所有常见的数据结构和算法分类,进行全方位的梳理。
1.1 类别说明数据结构和算法的种类非常之多,拿树举例,树的种类包括:二叉树、B树、B+树、Trie树、红黑树等等,本文只选择了二叉树。
对前端来讲,没有必要对某些比较偏的类型和解法多做了解,一是浪费宝贵的时间,二是应用的不多。
本文选择的数据结构和算法的类别均是出现频率最高,以及应用最广的类别。
1.2 题目说明另外,做题时找对典型题目非常重要,可以让你更快速更高效的掌握知识,本文后面也会给出每种类型的典型题目供大家参考。
题目来源:
awesome-coding-js:我的前端算法开源项目,包括我做过的题目以及详细解析
leetcode
剑指offer
另外,我会在后面长期更新一个前端算法的专栏,对每类数据结构和算法进行详细的讲解,敬请期待。
二、为什么要学习数据结构和算法在学习某块内容之前,我们一定要首先明确为什么要学,而不是盲目的跟风。
这将更有利于你从学习的过程中获得收益,而且会为你的学习带来动力。
首先明确一点,学习数据结构和算法不一定就是记住二叉树、堆、栈、队列等的解题方法也不是死记硬背一些题目,如果你仅仅停留在这样的表面思想,那么你学习起来会非常痛苦。
2.1 解决问题的思想计算机只是一个很冰冷的机器,你给他下发什么样的指令,它就能作出什么样的反应。
而开发工程师要做的是如何把实际的问题转化成计算机的指令,如何转化,来看看《数据结构》的经典说法:
设计出数据结构, 在施加以算法就行了。
所以,很重要的一点,数据结构和算法对建立解决问题的思想非常重要。
如果说 Java 是自动档轿车,C 就是手动档吉普。数据结构呢?是变速箱的工作原理。你完全可以不知道变速箱怎样工作,就把自动档的车子从 A 开到 B,而且未必就比懂得的人慢。写程序这件事,和开车一样,经验可以起到很大作用,但如果你不知道底层是怎么工作的,就永远只能开车,既不会修车,也不能造车。如果你对这两件事都不感兴趣也就罢了,数据结构懂得用就好。但若你此生在编程领域还有点更高的追求,数据结构是绕不开的课题。2.2 面试
这是非常现实的一点,也是很多前端学习数据结构和算法的原因。
一般对待算法的态度会分为以下几类:
Google、Microsoft等知名外企在面试工程师时,算法是起决定性因素的,前端工程师也是一样,基本是每一轮都会考察,即使你有非常强的背景,也有可能因为一两道算法答的不好而与这样的企业失之交臂。
第二类,算法占重要因素的,国内的某些大厂在面试时,也会把数据结构和算法作为重要的参考因素,基本是面试必考,如果你达不到一定的要求,会直接挂掉。
第三类,起加分作用,很多公司不会把数据结构和算法作为硬性要求,但是也会象征性的出一些题目,当你把一道算法题答的很漂亮,这绝对是加分项。
可见,学好数据结构和算法对你跳槽更好的公司或者拿到更高的薪水,是非常重要的。
三、如何准备了解了数据结构和算法的重要性,那么究竟该用什么样的方法去准备呢?
3.1 全方位了解在学习和练习之前,你一定要对数据结构和算法做一个全方位的了解,对数据结构和算法的定义、分类做一个全面的理解,如果这部分做的不好,你在做题时将完全不知道你在做什么,从而陷入盲目寻找答案的过程,这个过程非常痛苦,而且往往收益甚微。
本文后面的章节,我会对常见的数据结构和算法做一个全方位的梳理。
3.2 分类练习当你对数据结构和算法有了一个整体的认知之后,就可以开始练习了。
注意,一定是分类练习!分类练习!分类练习!重要的事情说三遍。
我曾见过非常多的同学带着一腔热血就开始刷题了,从leetcode第一题开始,刚开始往往非常有动力,可能还会发个朋友圈或者沸点什么的
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/109994.html
showImg(https://segmentfault.com/img/bVbw3tK?w=1240&h=827); 前端工程师这个岗位,真的是反人性的 我们来思考一个问题: 一个6年左右经验的前端工程师: 前面两年在用jQuery 期间一直在用React-native(一步一步踩坑过来的那种) 最近两年还在写微信小程序 下面一个2年经验的前端工程师: 并不会跨平台技术,他的两年工作都是Reac...
摘要:中四种修饰符的限制范围。数据结构和算法树快速排序,堆排序,插入排序其实八大排序算法都应该了解一致性算法,一致性算法的应用的内存结构。的部署方式,主从,集群。八大排序算法一定要手敲一遍快排,堆排尤其重要。 前言 15年毕业到现在也近三年了,最近面试了阿里集团(菜鸟网络,蚂蚁金服),网易,滴滴,点我达,最终收到点我达,网易offer,蚂蚁金服二面挂掉,菜鸟网络一个月了还在流程中...最终有...
摘要:数据结构和算法树快速排序,堆排序,插入排序其实八大排序算法都应该了解一致性算法,一致性算法的应用的内存结构。如何存储一个的。八大排序算法一定要手敲一遍快排,堆排尤其重要。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。 前言 16年毕业到现在也近两年了,最近面试了阿里集团(菜鸟网络,蚂蚁金服),网易,滴滴,点我达,最终收到点我达,网易offer,蚂蚁金服二面挂掉,...
阅读 3434·2021-09-08 09:36
阅读 2476·2019-08-30 15:54
阅读 2300·2019-08-30 15:54
阅读 1745·2019-08-30 15:44
阅读 2359·2019-08-26 14:04
阅读 2394·2019-08-26 14:01
阅读 2825·2019-08-26 13:58
阅读 1252·2019-08-26 13:47