程序猿的自我修养与提高——如何刷题

2018/02/03 刷题

Note

本文摘自一亩三分地刷题板块公告,谨以此激励自己,不断前行。

如何刷题

如何刷题: zijianz 发表于 2015-4-18 绝佳的经验:

一道题能调三天,不是聪不聪明,就是基础不好而已。要多练。

我至今还记得我第一次连续几次一段程序写完,编译,一个错没有时的兴奋。

我至今还记得我第一次连续几次Leetcode程序一气写完,提交直接accept时的开心。

我至今还记得我初期在论坛看哪道题都不会,觉得大家想法都好多好厉害的低落。

但我依然还记得也就是这几个月,我发现论坛的一些人怎么连这个都不知道(真的没有不尊重的意思),怎么连这个都能错,怎么连这么众所周知的方法都想不到的疑惑。

我现在还记得收到offer时不停的掐自己觉得不真实的感觉。尽管不明显,但只要我们不放弃,我们就在进步,不停的进步。你所做的每一件事,都有它的意义。

谁都是一步一步来的,调三天,没办法,只能继续调,过一两个星期可能就能过大部分test case了,再过几天就能一次accept了。

妹子,刷题重要又不重要。我觉得CS是一个整体素质的体现,特别是面试时manager那一轮,累的时候多看看Computer Architecture和OS以及Compiler,看得多了,你会发现CS的每个领域思想都是一样的,更重要的是你会终于发现这些算法究竟在实际中哪里用到了,会对心态有很大帮助。而且找工作聊行业聊领域也是很重要的一部分。

如果你调试不好,我建议用TDD,Test Driven Development,这不光在刷题时,面试时也很好用,有利于面你的人了解你的思路,以及很少会忘记边界。

先读问题,然后想象你在做测试,把所有你能想到的test cases都列出来(写出来),就当你要玩死一个别人的程序使劲出难题。

然后陈述自己的思路,用嘴把每个test case都跑一遍,至少能把自己说服了。

一气写成。多练练,一般你初期思路清晰,把思想化作程序的能力又没问题的话,这次就是AC。

另外,如果你真的太弱,我不建议你硬刷,不停的practice brute force并没有太大帮助。不如拿出一段时间,好好看看别人怎么写的。有一个叫水中的鱼的博客,真的非常非常非常的好,讲的也明白,建议你去看看。看高手程序,胜过自己闷头写几个月。重点是你读高手的解法多了会发现其中的pattern,其实做题来回来去就那么几种pattern,要做的只是如何从浮华的题目看出想考的本质而已,见多了本能就出解法了。

如果你真的觉得自己太弱,强烈建议多看高手写的,好好理解,然后自己闭卷从零写两天前看的题目,如果能自己从零写出来,就是真明白了。

切忌盲目刷题,这个论坛找到工作我见过不少一遍都没刷完的。真的要多总结,记思路不记题目,比如二叉树,我记得我总结时来回来去就3,4种思路,融会贯通了就什么都能解了。还是那句话,多看高手怎么想的,别自己苦想,看明白了隔一段时间自己重新来写,搞定了,这就是你的。

程序调的时间长真的只能继续写,写着写着就好了,把思想化作程序一气bug free是一种本事,你需要练习才能会,这很正常。

参考链接

Search

    Table of Contents