刷题小记

刷题到现在,不知不觉过了 500 大关后,真的不能再随随便便了,要认真起来了。就好像写博客,坚持了几年后,你就不自觉地内化了这个行为,好像自己隔了一段日子,就一定要写点什么了。

之前 500 纪念的文章里,也说了,明确感受到了瓶颈。好像自己刷题没什么长进了。幸好一个朋友提点,要逐个点击破来提高了。这两天就开始留意了。方法很简单,就是之前不会做就跳过的东西,现在就要求自己一定要看懂,不能随便跳过任何东西。不惜代价也要搞明白再往后。就发现,其实自己掌握的东西还是千疮百孔的。

小目标

其实目标是最重要的东西,就是到底想通过刷题获得什么?这样才能决定做法。如果说,刷题是为了找工作,应该刷《剑指》,反反复复刷,知道随机跳题都能秒做对。当然,这不是我的目标,因为之前也说了,35+ 找工作的时候,刷题只是获得一个聊天的机会,并不能帮助我了。

我现在定个小目标是,能在周赛妥妥 3 道题。很多同学可能觉得这很容易,当然我打心眼里也没觉得有多难,所以只能是一个小目标了。只是,以此为目标的时候,我能清晰定位到,自己缺少多少知识。也是自己之前可以忽略的东西。

短板

  1. 双指针的应用,虽然知道一些双指针的原理,会写基本的,但是总是很难从题目中一眼就看出来双指针的模式,几乎想不起来去用,所以我对这个掌握还是有问题的;
  2. 拓扑排序,这个概念很抽象,还不是很懂,有时候甚至是做出来了也不知道自己用到了相关知识,只是从感性层面自己找了个方法;
  3. Trie 树,这肯定是一般面试企业的时候不会用到的超纲数据结构,但是在周赛里,很可能会遇到的。需要更多的了解和训练,这是存储字符串比较高效的数据结构;
  4. 图算法,因为面试一般不会考到图,以前都刻意忽略了这方面的理解和训练,以至于这方面几乎都是空白的。尤其是拓扑排序,最近做不出的题目,都是频频遇到了这个领域的东西。
  5. 动态规划,现在终于对动态规划有了一些感觉,但是动态规划有很多的细分,线性,非线性,树形,还有一些方法上的技巧,什么压缩之类,都还很懵懂,并没有掌握得很好;
  6. 数论,上次双周赛里遇到求大数的前 5 位,尾 0 数量,后 5 位非零数字,我完全没思路的,不知道怎么着手,看别人的题解我甚至都有点看不懂,可见是自己完全空白的领域;
  7. 计算几何,也一直是自己刻意规避的东西,因为觉得麻烦,所以看到这类题目总是上手抄答案,真在竞赛里遇到了,也确实 都是只能束手无策了。

当然,短板还是有很多很多的,只是这几个是我目前想到的,欠缺比较多的东西,如果有针对性地训练的话,可能会有比较大的成效,也即在这些领域投入,边际效益会大一点。那就把这几个定成这一轮的焦点问题,尝试比较集中去投入一些经历。

计划

目前,在参加一个 91 天学算法训练营,花了 10 块的,群里的人感觉比较基础,自理能力也一般,经常还在问群主一些网站登录不了怎么办的问题,GitHub 没法访问的问题。每天的题目按照数据结构的顺序在出,不过呢,几乎都没有挑战了,打算就做着每日打卡权当是查漏补缺了。

LC 的每日打卡还是要坚持打的,因为几乎可以认为是随机在跳题出来的,这样比较容易发现自己的短板的。

此外,还是应该找专题来做,集中攻破一个个点。然后,三到六个月来回顾。