刷了500多道题了,还是新题不会.我差在那?

来自其他站点
LC我已经刷500多不同题了.每一题我也刷了不只3次了.如果非要加一起,怎么也差不多快小2000了吧. 做过的题现在都可以在10分钟内写出来,不是背的, 是通过理解了题目背后的逻辑. 但是为什么我在作新题的时候还是找不到思路或者没办法给出最优解? 我看那些轻松拿offer的大神们作题真的是毫无压力. 所以我觉得解出来不是考背答案或者背题的. 那到底问题是出在那里呢?

我这状态是单纯因为刷体还是不够,还是有什么精髓我没有体会到?

非常非常的迷茫,请大神们分享封神的过程.无比感谢!
置顶回复
收起
avatar 770384
yu0307楼主
感谢地里小伙伴们热情的分享, 我都是尽量的对每一个人的建议进行回复来表示我有认真的阅读你们的建议和表达我的谢意.

我来作一个阶段性的总结吧,也可以帮助新读者快速阅读.

问题的特征是: 刷题无数却遇新题无从下手.突然感觉花了好多时间和资源却学了个寂寞

识别: 大致上是遇到了瓶颈期. 跟自己说:"不要慌,不要自认愚蠢,这是正常.很多人都经历过." 信心上不能垮了.

误区: 错认为刷题数量正比刷题质量正比作题能力.
这个地方我觉得有必要展开一下.
我觉得其实刷题数量因人而异, 有些人刷100就可以达到我刷500道题的瓶颈期.我觉得这种差异现象造成的原因如下:
-刷题质量: 单纯求结果,未总结未归纳,未思考背后逻辑
-盲目: 长时间刷题造成大脑麻木, 纵使继续低效率刷题
-没有摸索到相适用的思维惯性
即便高效刷题,即使通晓背后逻辑,纵使熟练模板与识别问题类别,也并不代表可以秒题. 其实我觉得这里应该可以先不严谨的回答我这个帖子所题的问题了, 我们应该是差在思维惯性和应用能力上了.
PS: 引用pandami的话"人与人之间能力的差距是客观存在的". 但是,迄今为止我仍然认为这种天资聪明,这种客观差距对学习能力真的影响不大, 所以我觉得别人花5分钟做出来我花1个小时才做出来的题的原因大趋势是我没有摸索到关键的思维惯性(解题窍门不是思维惯性,窍门是思维惯性的产物).

造成原因: 没有形成正确的思维惯性
其实我觉得大部分人都明白刷题数量不具备任何代表性. 来阅读这个帖子的人应该也是花了一段时间,保证了质量的前提下刷了一阶段题后发现没有什么成效.开始怀疑人生,怀疑是不是自己就是笨.我觉得我们衡量结果的方式有些问题,也就好比是统计学上的群体选错了. 我认为可能是我们忽略了一个现实又或者选择性的欺骗了自己, 那就是即便高质量刷题,弄清了背后逻辑也未必可以熟练运用. 现实是我们可能只是具备了问题识别的能力却还没有应用的能力(解决办法我会写在下面).
我觉得我们其实是练就了问题识别的能力,就是可以把刷过题目的类型识别出来却无法识别特征, 营造出了一种假象,而错过了对特征识别的重要性. 我们需要建立起类别,特征以及逻辑之间的连接.
我们此时需要练就的是一种解题思维惯性. 也就是一种习惯,针对一种题目我们习惯使用哪一种方式以及习惯朝着那一个方向去尝试思考和分析.

还有一种可能,也可以是基础知识确实还是没有达到足够广. 自己的可用技能栏里面确实只有寥寥几个算法, 又怎么能够在逻辑上给出可去尝试的方向呢. 比如做个矩阵找路经的题,逻辑上就是没错,小规模测试就是可以过,正反思考就是没有问题.但是为什么一上10^10的数据规模就超时? 因为没学过dp....压根就没考虑过可以动态规划.

要点:
- 解题应用在于建立起问题识别,特征识别与区分以及分析逻辑的连接
- 熟练运用取决于思维惯性
- 完善算法知识面的无死角,给逻辑添加更多可用路经
- 思维惯性没有捷径,是熟能生巧. 因为这是习惯的培养,是在培养你思考方式上的习惯. 继续刷题,培养惯性记忆
- 不能盲目求解做题,完成题量不具备任何意义. 质量刷题不只是学习,还需要结合其他同类别题目找出特征并且建立特征与算法上的联系.

解决方案:
- 刷题质量: 不能单纯求答案,需要学习背后逻辑, 需要识别问题类别, 需要识别问题区别, 需要识别思路和模板. 不能把算法根题目联系起来而是把算法跟类别以及特征建立起联系. (我的状态就是建立起了问题与算法的联系,忽略了特征的联系,导致可以秒做过的题却对新题无从下手.)
- 刷题策略:
+ 总结逻辑思路
+ 逻辑路经总结,反推. 反推是为了找到逻辑路经上走错的节点在哪里
+ 结合思维惯性找出惯性上缺失的知识要点以及逻辑上的遗漏点
+ 参照给出答案给出此类答案存在的必要性,以及为什么自己的策略不适用. 启发于lisaeri的回帖
+ 最优解是循序渐进,但避免暴力求解,这样会给自己开了小差
+ 尽可能了解每一个算法,每一个算法都是思维逻辑上的一个可行路经
- 做题策略:
+ 真的要同题刷多次. 一是加深记忆,二是熟能生巧,三是培养区分特征的能力. 我每题都是最少3次尽可能达到5次, 因为我笨 LOL
+ 先识别题目类别(dp,tree,string,graph,etc), 再识别特征(数组是正序,数值无重复,等),再尝试思维上可行路经
+ 跟题杠上了也未必是件坏事, 最起码你是在摸索的过程当中学习到了那些算法是因为某些原因被排除了,是种惯性上的重塑. 但是! 当你没有可尝试的算法了,逻辑上走到尽头了,或者你只是读题就读了一个下午, 赶紧看答案.
+ 一定要整理!(需要我说三编吗?真的很重要) 不要做完就丢在脑后. 参考刷题策略进行整理.
- 冷静客观的分析:
+ 思想思维上不能麻木了, 不能好像丧尸一般盲目的刷题. 即便高质量的刷题,不总结,不休息,不让知识沉淀塑型是没用的. 不仅长时间会让自己低迷还会打击积极性,更是达不到高效.最恐怖的是还容易造成思维连冠性上的错误联系. 给自己时间,给大脑时间搞清楚刚刚到底发生了什么.
+ 阶段性的休息,在休息的过程中思考,归纳,总结. 找出逻辑上不合理的地方. 这也是为什么我会发这个帖子的原因,因为我在这个过程中发现了这个自认为重要的问题,觉得按章办事得到的这个结果逻辑上不合理,总觉得差点什么,想先解决这个致命问题再继续.
+ 必须要分析,我不喜欢拽英文但的确真的是(take a break and self reflect),不然做题就是白做了. 我觉得分析一件事情才是真正学会了一件事情. 不然真的只是肌肉记忆.
+ 保持客观,保持冷静. 不能太主观的认为是自己笨,要客观的认为是自己还没有找到正确的办法.

- 真的要休息,真的要让知识沉淀: luckystarufo说的确实犀利,也难怪得到好多赞. 有些东西确实需要时间,尤其体现在知识的沉淀上.要给大脑时间整理和记忆. 我也何尝不是屡屡上个厕所回来就发现自己学会了向龙十八掌? 开个玩笑.

我同时还有一个不赞同的观点: 我不认为在一道题上花一个下午是错的行为.因为在这个阶段我们反复的在尝试,反复的在排查和排除也是一种思维惯性上的积累.再遇到相似的问题下根据这个经历我们可以很快就排除了一类不适用的思路. 当然了, 一个下午就只是在那里反复的读题显然不是我的意思.
- 备注资源:
+ 花花讲题
+ labuladong
+ instant.1point3acres.cn
+ cs.jhu.edu

最后我想做一个猜测: 刷100道就拿到n个offer的人, 我觉得是根基好,是本身就在只是积累的过程当中就形成了解题的思维惯性. 只是猜测,希望得到更有见地的答案.

再引用TB2020的一句话"跟大神比笨很正常,只能和自己比拉". 我们的确需要摆正比较的对象,不然伤了自尊心还打消了积极性.

这个帖子里每一个回帖的人都在告诉你,你目前遇到的瓶颈不仅仅是正常现象, 大家都与你一样面对着同样的问题, 并且还是可以克服的. 大家一起加油吧!

注释: 这里提到的刷题只包括medium的题.

这只是个阶段性的整理,我还会根据新的跟帖逐步完善这个帖子希望达到给更多的类似相同经历的人提供奏效的解决办法. 所以有遗漏的或者误导说错的地方希望大家继续指出和跟帖.

再次感谢以下我引用和参考的人:
1point3acres.com 1point3acres.com 1point3acres.com 1point3acres.com 1point3acres.com @yyt913 @lisaeri @mellfish @p6152859 @易潇 @心亦D
大米 86
5
豌豆尖尖+1赞一个
SeerZero+1给你点个赞!
Kakikaki+1给你点个赞!
abawlau+1赞一个
samhan0616+1给你点个赞!
147条回复