【发布时间】:2013-08-09 17:55:00
【问题描述】:
我在一次采访中被问到以下问题,我无法解决任何问题,这将非常有帮助。
我有 100 个文件,每个文件大小为 10 MB,每个文件的内容都是一些字符串映射到整数值。
string_key=整数值
a=5
ba=7
cab=10 etc..
可用的物理 RAM 空间为 25 MB。如何设计数据结构:
For any duplicate string_key, the integer values can be added
Display the string_key=integer value sorted in a alphabetical format
约束:
All the entries of a file could be unique. All of the 10*1000MB of data could be unique string_key mapping to an integer value.
解决方案 1:
我正在考虑一个接一个地加载每个文件并将信息存储在哈希图中,但是这个哈希图会非常大,如果所有文件都包含唯一数据,则 RAM 中没有足够的可用内存.
还有其他想法吗?
使用 noSqldb 不是一个选项。
【问题讨论】:
-
我不知道这是否是他们正在寻找的答案,但 1) 对 100 个文件中的每一个文件进行排序,一次一个。将排序后的输出写入另外 100 个文件。 2)做100个文件匹配/合并,添加重复key整数值,并显示字符串key和整数值。
-
@gilbert le blanc 我同意第 1 步,当您在第一次迭代时只允许加载 2.5 个文件时,您将如何实现第 2 步?并且后续步骤中的文件数量要少得多。另外,当所有文件都具有唯一的字符串键值对时,最坏的情况会怎样
-
@bhava:您一次只在内存中的 100 个排序文件中的每个文件中保留两行。您在阅读文件时打印。这称为磁盘匹配/合并。这是我们 40 年前必须进行的处理。
标签: data-structures