跳至主要內容

算法学习指引

holic-x...大约 6 分钟算法算法

算法学习指引

学习核心

学习资料

学习路线

先掌握基础数据结构理论,然后结合实际场景题型加固知识点

算法基础:Hello算法入门(开源代码open in new window

  • 复杂度分析:数据结构和算法的评价维度与方法。时间复杂度和空间复杂度的推算方法、常见类型、示例等
  • 数据结构:基本数据类型和数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等
  • 算法:搜索、排序、分治、回溯、动态规划、贪心等算法的定义、优缺点、效率、应用场景、解题步骤和示例问题等

算法巩固 按照:数组、链表、哈希、字符串、栈和队列、二叉树、回溯、贪心、动态规划、单调栈 顺序刷题

个人学习技巧

按照模块刷题,将刷题思路和感觉先固化,然后再随机刷题灵活巩固

  • 阶段1:按照模块刷题,找出自己可以理解和把控的题解、梳理笔记 =》形成自己的题解

    • 入门:硬磕,理解题意,回归最纯粹的解题方案,暴力也好、超时也罢,先对题目有个初步印象,就像是第一次遇到题目的时候自己会怎么做,而不是背答案套公式

      • 尽量按照模块刷题,有时候刷着刷着会发现套路都是大同小异的,还能帮助打通任督二脉
    • 巩固:看题解,如果可以独立完成题目最佳,但如果起步时就卡在题目理解或者一点头绪都没有的话则直接去看题解,梳理方案,形成自己的题解笔记和解题思维

      • 如果一道题目概念模糊或者没有解题思路,在初始阶段的时候可以适当借助题解来缓解解题压力,在这个过程中需要整理自己的解题笔记,帮助自己在后续的过程中能够快速根据自己的题解笔记恢复记忆(例如总结解题思路和梗概,帮助自己在后面的阶段复盘的时候出现思路丢失时可以据此快速恢复状态,而不依赖于死记硬背套代码)
    • 进阶:多方案+复杂度优化,针对一题多解的题目要多加思考,不要局限于某一种方案,而是要进一步思考如何从时间复杂度和空间复杂度的方向上优化题解

  • 阶段2:模块刷题进阶,不依靠题解的基础上看是否可以把控题型,如果记忆丧失或者缺乏概念则进一步根据自己的题解加固印象

    • 对【阶段1】残留问题进行复盘、总结不足,加深题解印象
    • 试着理解扩展更多解法(对于题型可能有很多种解题思路,试着用其他算法方案解答,理解算法的灵活性)
  • 阶段3:随机复盘+纳新

    • 在【阶段2】的基础上理解模块化,掌握常见题型的解题思路,不局限于死记硬背
    • 试着去看一些新的题型,尝试选择合适的算法进行解答,随机适配

个人刷题里程

  • hot 100:按照模块大致过一遍题型,掌握核心易理解的思路,构建解题思维
    • 初刷题库,对于题型和题解思路都是半知半解,第一遍刷不出来不打紧,需要认真梳理题解,形成自己的知识库(这个过程会比较耗时,一方面是对题意的理解,另一个方面是对题解的选择,因为有些官方题解可能还不如野生题解好理解,所以这个过程需要多检索多思考,而不局限于单一解法)
    • 核心:硬磕(试着独立完成,如果没有思路则刷题解,直到吃透题目含义)
  • common 150:四舍五入二刷核心题型(部分题型是基于hot 100的),补充一些扩展题目,还是按照模块刷题并梳理题解
    • 基于hot 100的基础,本轮刷题相对没有初刷那么大压力,但是很多已经刷过的题型可能还是一知半解(有个大致印象,但是还是需要题解辅助或者一些代码细节考虑不清楚,此时阶段①梳理的题解就起到很大作用),可以试着根据梳理的题解关键字去回忆,在这个过程中查缺补漏
    • 核心:补充(试着独立完成,如果概念模糊则基于核心题解去辅助,此时不要看代码,而是根据核心题解关键字尝试去回忆解题思路,并在这个过程中补充题解)
  • 代码随想录 && 随机刷题
    • 模块化刷题:理解模块题型、梳理各个模块的解题技巧,分门别类,巩固体系化解题思路
      • 基于"解题模板"的概念进行重刷,从基础开始重构解题思路,这个过程中会发现打开新世界大门,会对前面的刷题过程中遇到的问题有着新的理解和概括,在这个过程中继续查缺补漏,巩固刷题技巧。对于一些连续的题型,需要结合"模板"分情况讨论
    • 核心:体系化,按照各个模块的题型,重新理解数据结构基础和解题模板核心
    • 随机刷题:参考一些刷题网页,随机刷题,切换思路,灵活应对

​ 现在想来可能一开始选择初刷代码随想录或许会不会更好,但是其实如果时间足够的话可以试着先刷基础题型,才能对这个刷题和思考过程印象深刻,否则可能从一开始就基于"答题模板"的角度去刷题,有可能会固化了或者养成依赖,思路有时候无法打开,陷入单一题解的思维定式,相信在前段时间所花费的精力在后期回顾发现这是一个非常好的养成计划

算法题解(个人梳理 JAVA 版本:不同解法思路拆解分析源代码参考版本)

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3