今天做完了LeetCode中国上面的初级算法的所有题目,从我开始做到现在,估计有2个月了吧,断断续续做完了初级的题目,虽然只是初级的题目,但是我能明显感觉我的算法能力得到了提升,可能这种感觉是由于这段时间做题,一直是比较热的状态的一种误差的感觉。

LeetCode阶段练习
LeetCode阶段练习

做完了初级算法,接下来准备做中级算法题目,今天尝试做了一题,明显感觉比初级的难度要上一个层次,有了前面初级算法的基础,还是可以接受这种难度。刷题,不仅可以对找工作有帮助,可以可以保持头脑灵活,不知道这种感觉是不是我的错觉。

这次刷题的契机是我4月初进行了一场面试,面试官只问了我三个算法题,我一个都没答好,然后面试官基本无话可说,我当时也是深受打击,决定开始刷题,当时三道算法的题目是:

  1. 一个无序数组,找出里面的中位数。(中位数:有序数组中间那个数)

  2. 一个2G文件,里面全是无序int型数字,只有500M内存,找出里面的中位数。

  3. 一个单链表,逆序输出每个节点的值。(比翻转单链表更难一点,不能改变链表结构)

刷题之后我觉得,不仅是面试有用,平时思维也是有些帮助的,所以我决定把它作为一项长期、持续的事来做。LeetCode的卷首语也讲的很好,分享到这里:

编程能力就像任何其他技能一样,也是一个可以通过刻意练习大大提高的。

大多数经典面试题目都有多种解决方案。为了达到最佳的练习效果,我们强烈建议您至少将此清单里的题目练习两遍,如果可以的话,三遍会更好。

在第二遍练习时,你可能会发现一些新的技巧或新的方法。到第三遍的时候,你会发现你的代码要比第一次提交时更加简洁。如果你达到了这样的效果,那么恭喜你,你已经掌握了正确的练习方法!

记住:刻意练习并不意味着寻找答案并记住它,这种练习方法不是长久之计。在没有参考答案情况下,越能自主解决问题,才越能提高自身能力。