说起来“剑指”这东西,当时也是没办法,感觉技术到了个瓶颈,面试也老被问到一些基础的东西,答得模棱两可,就想着干脆系统性地弄一弄。
开始动手
刚开始嘛雄心壮志,翻开第一题,好像是数组里的重复数字啥的。欸,心想这不简单?啪啪啪写了几行,一跑,不对。调试了半天,发现有个边界条件没考虑到。当时就感觉,这玩意儿没看上去那么轻松。
然后就一题一题往下啃。过程是真的枯燥。每天下班回来,或者周末,就对着电脑屏幕琢磨。遇到链表题,指针指来指去的,画图画了半天,脑子还是一团浆糊。有时候一道题能卡我一晚上,真的是抓耳挠腮。
我的笨方法
脑子不算特灵光,只能用笨办法。
- 先自己想: 拿到题目,先不看答案,自己琢磨。怎么也得挣扎个二三十分钟,实在没思路再说。
- 画图模拟: 特别是链表、二叉树这种,不画图真的搞不定。就在纸上画,一步一步模拟代码执行过程。
- 看别人思路: 自己实在想不出来,或者感觉自己的方法太烂,就去瞅瞅别人的解法。但不是抄,主要是看思路,理解人家为啥这么写。有时候一看,“卧槽,还能这样?” 拍大腿。
- 动手敲一遍: 理解了思路之后,必须自己亲手敲一遍,而且不能对着别人的代码敲。凭着自己的理解敲出来,再跑测试用例,有错了再调试。这个过程很重要,不然等于没学。
- 回头看: 过个几天,或者一周,把做过的题再翻出来看看,甚至重新做一遍。你会发现,第一次觉得很难的题,第二次可能就有点感觉了。这就是所谓的“二刷”、“三刷”,虽然我没那么系统,但意思差不多。
磕磕绊绊的收获
就这么搞了一段时间,虽然过程挺折磨人的,但回头看,确实有变化。
以前看到稍微复杂点的逻辑就头疼,现在好像思路能稍微清晰一点了。比如那个二维数组查找的题,一开始也是没头绪,后来理解了那个从右上角或者左下角开始找的方法,感觉挺巧妙的,对怎么利用数据结构特性有了点感觉。
还有就是对一些基础的数据结构,像数组、链表、栈、队列啥的,理解比以前深多了。以前可能就是知道有这么个东西,现在大概知道它们适合用在什么场景,有哪些坑要注意。
最重要的,可能还是心态上的变化。 以前遇到难题容易烦躁、放弃,现在好像更能沉下心去分析了。知道解决问题需要过程,需要耐心。虽然现在水平也就那样,但至少不怵了。
这段“剑指”的实践经历,对我来说还是挺有用的。不是说刷完就变大神了,主要是养成了一个分析问题、解决问题的习惯,还有就是把一些基础知识夯实了一下。这玩意儿,确实得亲自下场练练才行。
还没有评论,来说两句吧...