题目很简单,就是一个文件,里面的数据就是 ID->value:
<unique ID> <space> <value>
例如: 123131321 100
135235423 101
132523121 80
...
给定一个值 n ,返回最大的 n 个值的 ID: 比如上面 n=2 ,就应该返回:
135235423
123131321
就是个 top k 的问题,也不要求返回的 id 的顺序。唯一的要求是这个文件极端的大。
我理解单个文件,哪怕几百 G 吧,我直接 java 中按照 BufferedReader 一行行的读,再用 size 为 n 的 PriorityQueue 梳理一遍整个<id->value>即可,时间复杂度就是 O(lines * logn)。
也写了单元测试+集成测试,各种不合法的 corn case 都处理了,生成了个 10G 的文件(几十亿条)测试了就一分多钟就出来结果。不知道怎么提交上去还是挂了。。
大家觉得应该用啥高级些的算法么?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.