摘要: 题目内容 百度搜索框的suggestion,比如输入北京,搜索框下面会以北京为前缀,展示“北京爱情故事”、“北京公交”、“北京医院”等等搜索词。如何设计使得空间和时间复杂度尽量低。题目分析在字符串集合S中,找出相同前缀P的字符串。设size(S) = N,查询次数为M。1.朴素方案朴素得,每次查询时,遍历整个字符串集合,比较每个字符串的前缀。时间复杂度T(N*len(P)) = O(N),这里的len(P)是一个常数值,所以不会对大O造成影响,参见扩展阅读[1]。那总的时间复杂度就是O(MN),不使用额外空间,则空间复杂度为O(1)。1 for Si in S:2 if prefix(... 阅读全文
posted @ 2012-09-23 21:07 有深度的程序员面试题 阅读(6457) 评论(7) 推荐(4) 编辑
摘要: 关于动机:虽然工作快4年,时常还会关注一些趣味性的程序题目,但参与ICPC或TC比赛实在又是心有余而力不足,而且工作上的东西不是光有算法就能搞定的,所以就开始关注面试题。看到好多提供面试题内容的网站,大部分留个简略答案或者代码,我总觉得缺少了许多让人思考和领悟的东西。会了这题,再出个变种就又不会了。或者只从时空分析的角度去评判算法的好坏,缺少工程应用上的考量。我觉得这些都使得面试题解答成为一种快餐式填鸭学习,根本无法获得学习和思考的快乐,所以我自己想写写看,能不能写出些有点深度的内容来。 关于内容: 这些内容只是我利用业余时间来处理。 市面上也有些内容较好的相关书籍,如《编程珠玑》《编程之.. 阅读全文
posted @ 2012-09-23 11:15 有深度的程序员面试题 阅读(753) 评论(1) 推荐(0) 编辑