写点什么

极客大学算法训练营第一课

用户头像
落曦
关注
发布于: 2020 年 06 月 30 日

如何精通一个领域

Chunk it up 切碎知识点

  • 庖丁解牛

  • 脉络连接

任何知识体系都是一颗树,想要掌握一个知识体系关键是要把这些知识变成一棵树状结构。

人脑是内存是用来计算的,不是硬盘,是不适合进行存储东西的。

数据结构

  • 一维

  • 基础:数组 array(string),链表 linked list

  • 高级:栈 stack,队列 queue,双端队列 deque,集合 set,映射 map(hash or map)……

  • 二维:

  • 基础:树 tree,图 graph

  • 高级:二叉搜索树 binary search tree(red-black tree,AVL),堆 heap,并查集 disjoint set,字典树 Trie,……

  • 特殊:

  • 位运算 Bitwise,布隆过滤器 BloomFiter

  • LRU Cache 注意:了解每个数据结构的原理和代码框架 数据结构脑图 


算法

基础的三大算法:

  • if-else,switch——>branch(分支)

  • for,while loop——>iteration(循环,迭代)

  • 递归 Recursion(Divide & Conquer,Backtrace)

分支,循环,递归这三部分组成了所有算法和数据结构的基石。

任何高级的算法和数据结构到最后都会变为最基础的分支、循环、递归。寻找重复单元,基于这些重复单元来泛化高级的数据结构。

部分高级的算法:

  • 搜索 Search:深度优先搜索 Depth first search(DFS),广度优先搜索 Breadth first search(BFS),A*,……

  • 动态规划 Dynamic Programming

  • 二分查找 Binary Search

  • 贪心 Greedy

  • 数学 Math,几何 Geometry

注意:在头脑中回忆上面每种算法的思想和代码模板

算法脑图 


Deliberate Practicing 刻意练习

职业化运动

  • 基本功是区别业余和职业选手的根本

  • 基础动作的分解训练和反复练习->最关键的点

  • 乒乓球

  • 台球

  • 滑雪

如果是玩游戏,比如说 dota,需要用到一些技巧,比如控兵,游走,推塔,打野,反补……

想要达到职业的水平,必须将每一个部分单独拿出来进行练习,经过不断的反复练习和刻意练习之后,最后能够达到顶尖的水平。

所以无论是哪一个项目,都需要不断的练习,过遍数,才能成为顶级的高手!

练习的方法、量化指标

  • 刻意练习——过遍数

  • 练习缺点、弱点地方

  • 不舒服、不爽、枯燥

  • 生活中例子:乒乓球、台球、游戏等

对自己的弱项进行练习,跳出舒适区,反复练习。

  1. Feedback 反馈


Feedback

  • 即时反馈

  • 主动型反馈(自己去寻找)

  • 看高手写代码(GitHub,LeetCode,……)

  • 第一视角直播(bilibili)

  • 被动式反馈(高手给你指点)

  • code review

  • 教练看你打,给你反馈

 

切题四件套

  • Clarification(说明问题的解法)

  • Possible solutions(找到可以解决的方法)

  • compare(time/space)(比较时间复杂度和空间复杂度)

  • optimal(加强)(找到最佳的解法)

  • Coding(多写)

  • Test cases(举出测试用例)

五步刷题法

刷题第一遍

  • 5~15 分钟:读题+思考,如果没有思路进入下一步

  • 直接看解法:注意!多解法,比较解法优劣

  • 背诵,默写好的解法

刷题第二遍

  • 马上自己写——>LeetCode 提交 不断的修改 bug,检查问题

  • 多种解法比较、体会->优化

刷题第三遍

  • 过了一天后,再重复做题

  • 不同解法的熟练程度——>专项练习

刷题第四遍

  • 过了一周,反复回来练习相同题目

刷题第五遍


  • 面试前一周恢复性训练

用户头像

落曦

关注

还未添加个人签名 2019.03.25 加入

还未添加个人简介

评论

发布
暂无评论
极客大学算法训练营第一课