leetcode解题思路的培养

首先,能够提出"可能刷过的题会做,新题目就不会了",说明你已经迈过了学习算法数据结构的第0阶段(或者说算法竞赛之类的能力的第0阶段)。

 
我曾经是做ACM竞赛的,以我之前的经历来讲,归纳"算法竞赛、解决算法题目的能力"

这条路有5个阶段:
阶段0(初学乍练,不足挂齿): 学习基础知识(经典算法、数据结构等),为了掌握这些基础知识通过考试在做一些纸上的题目,好一点的会去主动的编一些基本的程序题目。全国50%以上的计算机专业的同学可能都在这阶段挣扎着。

阶段1(粗懂皮毛,半生不熟): 基本的算法各类题型都已经见过,简单的还是难得每种类型加一起至少也刷过200多道,看到原题、熟题、模板题都可以解决,但是一到考察想法、或者很复杂的题目,单靠自己可能想不出来了,需要看解题报告才可解决,但有时候解题看不明白或者看不出来写解题报告的人水平咋样,反正照着他的思路写出来没问题。

阶段2(已有小成,融会贯通):一般难度的题目(leetcode 80%以上的题目应该都是一般难度的、ACM区域赛的部分题也是)都可以独立解决,虽然有的做的快点,有的做的慢点,但是这种题死磕一下肯定都通过。(就像leetcode把测试数据都给了,就没有通过不了的)。有了不错的举一反三能力。看别人的解题报告也可以知道谁写的好,谁写的屎。周围的同学如果有不会的问题会问你,那些都是小意思。
 
达到阶段2的时候,那么恭喜你,放心吧,只要再加上系统性的训练,什么BAT微软亚马逊的算法面试不会难倒你的! : ) 

 阶段3(炉火纯青, 出类拔萃): 刷leetcode这种非竞赛OJ早已经没感觉了,感觉就是在消磨打发时间。刷OJ也只刷中等偏上或者难题了,这样才能提高自己。这一阶段更重要的是培养临场竞赛能力,什么Topcoder SRM,Codeforce周赛,谷歌GCJ,百度之星之类的算法竞赛,有时间参加一定会玩一玩,状态好的时候说不定打个前几名,状态差点反正也掉不到哪里去。Topcoder、Codeforce黄名或者红名的阶段。如果还有两个志同道合的好队友,那么ACM打个金奖也没什么问题。

阶段4(登峰造极,举世无双): Topcoder红色带靶心,世界上到这阶段的选手其实数的过来,ACM world final的奖牌是曾经的回忆,退役后有空也会玩一下,不小心就是某个比赛的第一名。题目早就不会再去刷了,无招胜有招吧。其实想到这阶段,光凭努力一般是不行的。最重要的还是天赋,就是天才那就是1%的灵感加上99%的汗水中的那1%的灵感。

我想你纠结的就是如何从第一阶段到第二阶段吧,其实第1阶段到第2阶段,要注意如下几点:
1.刷题的数量,只有量变才能引起质变。在想从第1阶段到第2阶段,应该得有300-500道题目的积累,有半年-1年的刷题经验。
2.刷题的质量,刷水题那是不可能到第2阶段的,还是得做一些有难度(考思想),复杂(考编码量)的题目。
3.总能问题的能力,其实想举一反三,最重要的是总结,总结每种类型的题型为什么可以这么出?为什么难?出题者的思路是什么?
他想给我设计什么坑让我无法通过?

做以下这些:
1.如果为了准备面试,刷leetcode至少得达到200-300题,且这些题目都得好好总结着刷,一定保质保量,写写解题报告给大家看看也是不错的方法。
2.如果为了准备算法竞赛,好好打基础,推荐一本书,刘汝佳的《算法竞赛入门经典》,推荐一个网站http://train.usaco.org/usacogate
最基础的竞赛训练网站,充分练习编码能力。

同学加油!你可以的。 : )

林沐

你可能感兴趣的:(LeetCode-小象学院)