查看: 3409| 回复: 10
跳转到指定楼层
上一主题 下一主题
收起左侧

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

全局:

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

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

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 非!常!好!用!






上一篇:为什么bucket sort的space complexity是O(kn)
下一篇:部分排序数组找最大数
🔗
marine 2014-1-21 10:09:07 | 只看该作者
全局:
不是“第几长”,而是“最长的几个”
回复

使用道具 举报

🔗
 楼主| 一地鸡毛 2014-1-21 10:20:42 | 只看该作者
全局:
kinslayer 发表于 2014-1-21 09:58
应该是吧
btw 什么是“Don't use sort()”?

就是python built in function sort 或者 sorted 不让用
回复

使用道具 举报

🔗
 楼主| 一地鸡毛 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 | 只看该作者
全局:
良心题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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