文章出处:掘金 ConardLi

题目来源

题目来源:

  • awesome-coding-js:我的前端算法开源项目,包括我做过的题目以及详细解析
  • leetcode
  • 剑指offer

如何准备

全方位了解

在学习和练习之前,你一定要对数据结构和算法做一个全方位的了解,对数据结构和算法的定义、分类做一个全面的理解,如果这部分做的不好,你在做题时将完全不知道你在做什么,从而陷入盲目寻找答案的过程,这个过程非常痛苦,而且往往收益甚微。

本文后面的章节,我会对常见的数据结构和算法做一个全方位的梳理。

分类练习

按每种类别练习,例如:这段时间只练习二叉树的题目,后面开始练习回溯算法的题目。

在开始练习之前,你往往还需要对这种具体的类别进行一个详细的了解,对其具体的定义、相关的概念和应用、可能出现的题目类型进行梳理,然后再开始。

题目的选择

关于题目来源,这里我推荐先看《剑指offer》,然后是leetcode,《剑指offer》上能找到非常多的典型题目,这对你发现和总结规律非常重要。看完再去刷leetcode你会发现更加轻松。

关于难度的选择, 这里我建议leetcode简单、中等难度即可,因为我们要做的是寻找规律,即掌握典型题目即可,当你掌握了这些规律,再去解一些hard的问题,也是可以的,只是多花些时间的问题。切忌不要一开始就在很多刁钻古怪的问题上耗费太多时间。