zoukankan      html  css  js  c++  java
  • 回顾总结与重启

    两年时间,LeetCode刷了600+的同时,我也了解、训练了很多经典的数据结构与算法问题。在刷题的过程中,对数据结构与算法有了更深的了解,对Python语言做了更多的实践。我相信,刷题不只是为了找工作,更多也是在提升自己。在此,记录自己刷题的总结与感悟。
    我相信刷题的过程中有三种境界:
    1、模仿与记忆。第一过程是最艰难,也是最基础的。对于没什么算法基础的同学,一开始接触KMP算法,马拉车算法,很难能够做到看一遍就会,做一遍就能默写的程度。这是反复的过程,只有多刷几遍相关题型,才能理解、领悟使用这种数据类型或者使用这种算法的技巧与优势。这一阶段要做到:給一道做过的题,能很快的回想起其使用的算法与算法的具体过程和本质。
    2、分析与总结。这一阶段,我谓之培养“题感”的过程,也就是学习刷题套路的过程。在总结的过程中,才能真正了解为什么这种题要用这个数据类型,为什么这样能降低时间复杂度,下次什么题型也能采用这种技巧来解题。这一阶段要做到:给一类题型,能很快回想起该题型常用的技巧和算法,并能举出一二道最经典的例题。我之前的文章也大多是此类总结。

    举个例子,比如要求一个数组中最长/最短达到某个条件的连续子数组,不妨考虑下以每个元素开始/结尾的时候,最长/最短的连续子数组。

    3、思考与泛化。当做过一定量的题后,你已经对常用的数据结构、算法了然于胸,对于一道熟悉的新题,我想你能很快的想到常用的算法解法,并能很快说出他的最优时间复杂度与所使用的数据结构。但对于一道不熟悉的题,抛弃所谓的算法与数据结构吧,很多时候,思考的方式比固定的套路,有用的多。特别在笔试的时候,很少有题是你熟悉的套路题,这个时候要静下心来去思考,最优解法通常是通过推导、泛化得到的,而不是你认为最牛的数据结构(线段树、并查集之类)就能解决。

    典型的,俄罗斯套娃问题。当然,一方面,你得了解最长递增子序列的经典解法,另一方面要思考如何能降低解法的时间复杂度,这里用的是排序,为什么排序能够优化解法呢?

    另外,我的刷题建议是,先刷两遍剑指offer,然后根据分类刷LeetCode前100道,然后从101道开始顺序或者随机的训练。
    正值秋招末端,我的刷题记录也到了一个新的阶段。秋招通过了微软的面试,我想也是对我数据结构与算法基础的肯定。接下来的计划是重启600+的LeetCode刷题总结,并准备用Python+cpp的方式实现,希望能继续提升吧。
    与你共勉。

  • 相关阅读:
    ABAP实现屏幕自己刷新和跳转功能
    SAP 邮件发送
    MIRO做发票校验时实现替代功能的多种方式
    SAP资产折旧,消息编号AA687:在上一年结算之后您只能记帐到新的一年
    SAP 月结F.19与GR/IR
    ABAP字符串的加密与解密
    ABAP DEBUG
    NUMBER_GET_NEXT
    OO ALV 学习参考
    Crontab定时任务配置
  • 原文地址:https://www.cnblogs.com/hellojamest/p/11803244.html
Copyright © 2011-2022 走看看