发信人: smilenceyu (smilence), 信区: JobHunting
标 题: 菜鸟用careercup书和leetcode准备的一点体会
发信站: BBS 未名空间站 (Tue Oct 8 19:13:56 2013, 美东)
感觉准备过程中走了很多弯路,一开始看很多经验说是大多数公司cc150就够用了,是
神书,结果我做了三遍,版上很多题目只要没见过还是不会做。然后我就开始做
leetcode,目前做到一半,不会的就看看discuss版面,有一定成效。
我觉得真正提高最大的是最近看面经。感觉自己思路见识广了很多,也开始大致明白为
什么有些人一看题就知道应该用backtracking,或者dp什么的。
其实原因并不是面经这个题有什么区别,而是如果做careercup书,不会做就看答案,
答案只会告诉你这道题目怎么解,这是我觉得cc150写的不好的地方。比如他每个章节
有一点基础知识,但不会把这些跟题目对应起来。结果你还是不会分类。
做leetcode就好一点点,因为discuss上面很多人会写自己的分析过程。就是“为什么
想到这样做”。
做面经是收获最大的,因为做一道题目的时间最长,没有现成答案,不会做只能去搜资
料。虽然找资料有很多冗余的过程,但是反而开拓了见识,了解了很多分析和分类的方
法。其实就是一种“模式识别”
比如一个boggle game题,搜到网上很多人总结这个题,比如暴力回溯算法,建立trie
的做法。我之前根本不会用trie,只看到cc150提了一句这个,但是看了这些详细的总
结,我就对这个有一个详细的了解。
还有比如wordladder,discuss版上的答案不怎么好,我就搜了些别的资料。我就开始
想最短路径,直觉上就是dijkstra,为什么都说用BFS呢?然后我就搜bfs+dijkstra,
发现维基百科说bfs就是dijkstra的特殊情况。对啊,就是边的weight变成1而已,而
priority_queue也就退换成了queue,然后我瞬间又明白了为什么heap在java和C++的实
现里,都被认作是一种“queue”
感觉就跟背单词一样,如果结合语境,去阅读单词的很多用法和例句,虽然这些用法和
例句未必记得住,但是因为花了很多功夫去查找冗余信息,反而记住这个单词本身就相
当容易了。
标
发信站: BBS 未名空间站 (Tue Oct
感觉准备过程中走了很多弯路,一开始看很多经验说是大多数公司cc150就够用了,是
神书,结果我做了三遍,版上很多题目只要没见过还是不会做。然后我就开始做
leetcode,目前做到一半,不会的就看看discuss版面,有一定成效。
我觉得真正提高最大的是最近看面经。感觉自己思路见识广了很多,也开始大致明白为
什么有些人一看题就知道应该用backtracking,或者dp什么的。
其实原因并不是面经这个题有什么区别,而是如果做careercup书,不会做就看答案,
答案只会告诉你这道题目怎么解,这是我觉得cc150写的不好的地方。比如他每个章节
有一点基础知识,但不会把这些跟题目对应起来。结果你还是不会分类。
做leetcode就好一点点,因为discuss上面很多人会写自己的分析过程。就是“为什么
想到这样做”。
做面经是收获最大的,因为做一道题目的时间最长,没有现成答案,不会做只能去搜资
料。虽然找资料有很多冗余的过程,但是反而开拓了见识,了解了很多分析和分类的方
法。其实就是一种“模式识别”
比如一个boggle game题,搜到网上很多人总结这个题,比如暴力回溯算法,建立trie
的做法。我之前根本不会用trie,只看到cc150提了一句这个,但是看了这些详细的总
结,我就对这个有一个详细的了解。
还有比如wordladder,discuss版上的答案不怎么好,我就搜了些别的资料。我就开始
想最短路径,直觉上就是dijkstra,为什么都说用BFS呢?然后我就搜bfs+dijkstra,
发现维基百科说bfs就是dijkstra的特殊情况。对啊,就是边的weight变成1而已,而
priority_queue也就退换成了queue,然后我瞬间又明白了为什么heap在java和C++的实
现里,都被认作是一种“queue”
感觉就跟背单词一样,如果结合语境,去阅读单词的很多用法和例句,虽然这些用法和
例句未必记得住,但是因为花了很多功夫去查找冗余信息,反而记住这个单词本身就相
当容易了。
编程比起背单词要强调理解的多,所以这个道理应该是更加明显。
转自 http://blog.sina.com.cn/s/blog_631d3a630101mg9t.html