algorithms

✍️ Tangxt ⏳ 2020-09-03 🏷️ faq

FAQ

1、学习数据结构与算法的教程?

2、为什么要学算法?

你想要解决复杂问题,如:

关于 Vue 源码的阅读:

你想看懂 xxx 源码, 那么你得了解 yyy 概念,以及其相应的代码

如:

3、如何系统训练?

是:

链表篇、栈和队列篇、哈希表篇、二叉树篇、字典树、并查集、常见排序和查找算法、回溯算法、动态规划、贪心算法、LRU 和 LFU、字符串和正则篇

不是:

按照 LeetCode 上的顺序一题一题刷

4、关于刻意练习?

走出自己的舒适圈!

  1. 经常性地做你不会做的题
  2. 多种解法方式轮流试,最大化地挖掘一道题的价值

关于练习的本质:是「练」,而不是一直做简单题,一直做你会的题,然后得到所谓的「AC」

Accepted,在信息学竞赛中使用 Accepted 表示程序通过评测,即程序得到满分,简称 AC

5、数据结构与算法总览?

学习目标?

通过刻意练习,你一看到某道题目,你就能很快知道方法一是什么,方法二是什么,方法三又是什么……然后马上把代码模板给写出来! -> 能到达这样的效果,那就能证明你的「算法与数据结构」内功已经慢慢开始积累起来了……


如何精通一个领域?(职业训练,三步走) -> 学习方法


关于算法与数据结构的练习,我们该如何刻意练习?

谨记:做算法题的最大误区:只做一遍!

谨记:过遍数!!方可走远!!!

上边刻意练习的生活化例子:

关于职业化运动:

  1. 基本功是区分业余和职业选手的根本(深厚功底来自于–过遍数
  2. 基础动作的分解训练和反复练习(最大的误区是题只刷一遍就完事儿了,就像是你练习打兵乓球,一个简单的挥拍动作你都得练习成千上万次,而这样做是为了能做到肌肉记忆,最后达到条件反射)
  3. 刻意练习-过遍数(五毒神掌)
  4. 练习缺陷、弱点的地方(哪里弱就补哪里,直到没有明显的弱点),这可能会极大的让你感到不舒服、不爽、枯燥,但是说明在成长。
  5. 生活中的例子:乒乓球、台球、游戏、滑雪、篮球…… -> 游戏打得好,如 LOL,有机地拆开它,如把补兵练好、把视野怎么做练好等等;篮球打得好,如老詹的技术成长,如不断地听取他人意见,并把自己的想法用到比赛中去、低位背身单打(可突,可转身后撤步中途)、无球攻框、转换进攻(快攻)、三分能力、扣篮、追人式盖帽、传球、防守、长久以来的身体保养……

把基本功练好,当你面对各种复杂的场景,你就能很快速地想出方案并解决之…… -> 所谓刻意练习的「刻意」,指的是,如:

刻意

我们刷的那些经典算法题也是刻意去刷的(很枯燥),在真实开发中,大概率不会出现题里边所描述的那种情况下,但我们刻意刷题,是可以做到举一反三,然后把其中的思想、套路用到我们的真实开发中去的! -> 基础好,项目开发事半功倍!

一只脚站在舒适区,另一只脚踏出舒适区:

舒适区


在练习前,先看看「数据结构与算法」的知识体系(切碎知识点):

脑图:数据结构算法

数据结构三大块:

数据结构

算法八大点:

算法

➹:数据结构与算法总览 - 简书

➹:【406-毕业总结】 · Issue #1476 · algorithm004-01/algorithm004-01

➹:01 - 数据结构与算法总览_qq_37569355的博客-CSDN博客

➹:覃超数据结构与算法7天训练营笔记 - Eiger - A young gopher

➹:算法学习 - 刷题入门指南