一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 1322|回复: 10
收起左侧

[学Python/Perl] 一个python的面试题

[复制链接] |试试Instant~ |关注本帖
一地鸡毛 发表于 2014-1-21 06:09:13 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
本帖最后由 一地鸡毛 于 2014-1-21 12:03 编辑

要求read a file 然后writes the _X_ longest lines 到different file去。请问这个 “_X_” 是第几长的意思吗
Don't use sort()/sorted().
顺便推荐一个mac上run code的软件——coderunner 非!常!好!用!





头像被屏蔽
kinslayer 发表于 2014-1-21 09:58:23 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

marine 发表于 2014-1-21 10:09:07 | 显示全部楼层
不是“第几长”,而是“最长的几个”
回复 支持 反对

使用道具 举报

 楼主| 一地鸡毛 发表于 2014-1-21 10:20:42 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 一地鸡毛 发表于 2014-1-21 10:21:19 | 显示全部楼层
marine 发表于 2014-1-21 10:09
不是“第几长”,而是“最长的几个”

嗯嗯 是最长的几个
回复 支持 反对

使用道具 举报

co89757 发表于 2014-1-21 19:55:22 | 显示全部楼层
a naive method using Xn iterations - just do X scans over the file and take max each time while masking out the previous identified maxes.
回复 支持 反对

使用道具 举报

santywang 发表于 2014-2-18 02:57:27 | 显示全部楼层
co89757 发表于 2014-1-21 19:55
a naive method using Xn iterations - just do X scans over the file and take max each time while mask ...

正解 每次取出最长的那一行 然后取x次
回复 支持 反对

使用道具 举报

RickyYe 发表于 2014-2-18 09:12:07 | 显示全部楼层
假如用楼上的算法,那么如果文件里有N行的话,每次找最长的那行,那么最差的情况是,要read X次file,每次scan N行,所以时间复杂度是O(XN)。

可以用一个大小为X的min heap维护结果,只需要read一次文件,一开始建一个空的min heap,然后先扫描X行,然后根据行的长度的比较结果存入min heap中;之后每读入一行,比较当前行s的长度跟min heap的top中存的行t的长度,如果s的长度比t短,说明s比当前min heap中已经存入的X行都要短,因为这是个min heap,top元素的长度肯定是最短的,那么直接忽略s;如果s长度比t要长,那么说明t不是前X长的行,因为至少有s还有min heap中其他的X-1行要比t长,那么pop掉t,然后将s push入min heap中。这样,总共read 1次file,scan N行,每次操作min heap的时间复杂度是O(log X),所以总共的时间复杂度是O(N log X)。

BTW,编辑任何源代码,一个vi就够了,编译任何一门语言,一个compiler + 一个Makefile就够了。
回复 支持 反对

使用道具 举报

denev2004 发表于 2014-2-26 02:58:20 | 显示全部楼层
RickyYe 发表于 2014-2-18 09:12
假如用楼上的算法,那么如果文件里有N行的话,每次找最长的那行,那么最差的情况是,要read X次file,每次s ...

经提醒我才发现卧槽这个题目的状况不就是这不就是我刚上过的课上的一个原题么结果我当时做出来了这次都没反应过来…看来活用算法没那么简单啊…
回复 支持 反对

使用道具 举报

北美农民 发表于 2014-2-26 05:11:50 | 显示全部楼层
良心题。
回复 支持 反对

使用道具 举报

dhtim135 发表于 2014-3-5 12:54:11 | 显示全部楼层
我认为可以用min-heap做 但是需要modify Comparator
就是比较字符串长度
这样就可以了
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-10 16:55

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表