算法前言


前言

如何高效的学习数据结构和算法?

期待效果

  • 职业顶尖级别——对算法的理解
  • 一线互联网公司面试
  • LeetCode 300+的积累

精通一个领域

  • Chunk it up 切碎知识点
    • 庖丁解牛
    • 脉络连接
  • Deliberate Practicing 刻意练习
    • 基本功是区别业余和职业选手的根本
    • 基本动作的分解训练和反复练习
  • Feedback 反馈
    • 即时反馈
    • 主动反馈(自己去找)
      • 高手代码(github、leetcode、etc.)
      • 第一视角
    • 被动式反馈(高手指点)
      • code review
      • 教练看你打,给你反馈

Chunk it up

利用Chunk it up 来分解数据结构和算法

  • 举个例子-游戏LOL

    • 控兵、运营、战术、热键操作 vs 鼠标操作
  • 数据结构脑图、算法脑图

数据结构分解

  • 一维结构
    • 基础:数组array(string)、链表linked list
    • 高级:栈 stack队列 queue双端队列 deque集合 set、映射 map(hash or map)、etc
  • 二维结构
    • 基础: tree、 graph
    • 高级:二叉搜索树 binary search tree(red-black tree ,AVL), heap,并查集 disjoint set,字典树 Trie,etc
  • 特殊
    • 位运算 Bitwise,布隆过滤器 BloomFilter
    • LRU Chace

注意:了解每个数据结构的原理和代码框架

算法分解

  • if-else,switch —— branch

  • for , while loop —— Iteration

  • 递归 Recursion (Divide&Conquer,Backtrace)

  • 搜索 Search:深度优先搜索 Depth first search,广度优先搜索 Breadth first search,A*, etc

  • 动态规划 Dynamic Programming

  • 二分查找 Binary Search

  • 贪心 Greedy

  • 数学 Math几何 Gemetry

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

刻意练习

  • 刻意练习-过遍数(五毒神掌)
  • 练习缺陷、弱点地方
  • 不舒服、不爽、枯燥

切题四件套

  • Clarification(读题)
  • Possible solutions(可能的解决方案)
    • compare(time/space) 比较
    • optimal(加强) 最优解
  • Coding(多写)
  • Test cases 查看案例

五毒神掌

五步刷题法

  • 刷题第一遍
    • 5分钟:读题+思考
    • 直接看解法:注意!多解法,比较解法优劣
    • 背诵、默写好的解法
  • 刷题第二遍
    • 马上自己写 leedcode提交
    • 多种解法比较、体会—->优化
  • 刷题第三遍
    • 过了一天后,再重复做题
    • 不同解法的熟练程度——>专项练习
  • 刷题第四遍
    • 过了一周:反复回来练习相同题目
  • 刷题第五遍
    • 面试前一周恢复性训练

准备

训练环境、编码技巧、Code Style

工欲善其事,必先利其器

训练环境

Win 10、Google、IDEA / VS Code 、Leetcode plugin

Code Style

Python、Java、……

  • Google coed style、Facebook、Airbnb

LeetCode

指法和小操作

  • home、end(行头、行尾)
  • Word 单词、选单词、选整行
  • IDE 的自动补全
  • Top tips for <IDE-name>

自顶而下的编程方式



文章作者: 韩思远
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 韩思远 !
评论
 上一篇
算法-复杂度分析 算法-复杂度分析
复杂度分析Big O notation 注意:只看最高复杂度的运算 O(1):Constant Comlexity 常数复杂度 O(log n):Logarithmic Complexity 对数复杂度 O(n):Linear Comp
2020-08-31
下一篇 
算法之美-入门准备 算法之美-入门准备
算法入门准备 学习知识的过程是反复迭代、不断沉淀的过程,我们一起加油 目标:写出达到开源水平的框架 算法和数据结构是什么? 数据结构指的是“一组数据的存储结构”,算法指的是“操作数据的一组方法”。数据结构和算法是相辅相成的。数据结构是为算
2020-08-31
  目录