本文是在学习中的总结,欢迎转载但请注明出处:http://write.blog.csdn.net/postedit/41964669
最近在刷LettCode上的算法题,发现好多题目的解题思路大体是一致的,甚至会出现一解对多题的情形,可能一方面原因是我刷的都是简单题,另一方面原因可能是网站有意来提高我们的信心和联想能力。比如有求解二叉树最大深度和求解二叉树最小深度的题目,也有判断两颗树是否完全一致和判断两个树是否轴对称的题目,还有按层次从树根往下输出每层元素和按层次从下往树根输出每层元素的题目等。
昨天解答了按层次从树根往下输出每层元素的题目,今天又碰巧遇到类似的三个题目,并不是我刻意拿这几个题目来说话,而是我觉得算法之间思想是相通的,并不是孤立的,从一个算法可以转变为另一个算法,可能只需要加一些简单的条件,所以我觉得如果我们单纯地为了做题而做题,虽然也能够提高自己的算法水平,但是并不能举一反三,如果我们在做一道题的时候能够多一些联想,多考虑一些其它可能的方式,久而久之,我们的思考能力和分析问题的能力也会得到提高。就拿我自己来说吧,之前从没做过任何算法题,除了在学校数据结构课上学习的一些知识。刚开始做LettCode上简单题算法题时,感觉很困难,一道题都要想半天甚至一天,因为之前从未有过算法相关的训练,思维过程也没有那么的灵活,但是我坚持每一道题都自己想,自己分析每一道题,不管自己算法写的有多烂,只要是对的即可,对于自己这样的新手开始不必要要求那么高。在慢慢坚持刷完二十多道简单题后,我发现自己的思维不再那么刻板,我会通过某一道题联系到另外一些相关的题。我想每道算法题肯定会对应着某一个问题,对应着一个应用场景,要不就没有人提出问题,也没必要去解决它。我还会继续坚持下去,从简单题到困难题,from
easy to hard,坚持刷完已有的166道题目。这个过程也许就是成长的过程吧,并不需要一个完美的结果,只需要坚持自己,做自己想做的事,不断提高自己,从简单开始,从基础开始,慢慢超越自己,提高自己。
分享这短时间在刷题中的一些体会:
(1)不要好高骛远。从简单做起,要不为什么会把题目分为简单、中等、困难呢,万丈高楼从地起。
(2)坚持下去。每两天我都会抽出时间做一做题,虽然上班很忙,抓住身边的暗时间,不久你就会发现不一样的自己。
(3)独立思考。不要一时想不出来就百度,自己想出来的永远也忘记不了,努力自己思考,提高自己的思维能力。
(4)分享。将自己的思路写下来,分享给大家,知识的共享所得回报不是简单的知识相加,而是线性的甚至是指数级的。
希望对你有所帮助。谢谢。