请提出一些替代方案,以解决暴力解决方案使用索引非常大且存储非常大的值(非常大意味着超出 INT 范围)的问题。我正在使用 Java 来解决这个问题。
示例问题: 将大量鹅卵石放入一大堆水桶中,然后计算每个桶中的平均鹅卵石。
一种方法是声明一个大数组,并根据用户指定的索引继续放置鹅卵石,然后计算平均值。但是这样我们就会为这样的数组使用大空间。
答案 0 :(得分:3)
如果数组稀疏,则一个选项可以是 Map
的索引值。
如果所有数据仍能适合内存,则索引超出int
范围,您可以考虑数组数组。主数组可以包含大小的数组,例如1000000000.此数组中的第0个索引将包含值0-999999999,第一个索引,1000000000-1999999999等。
另一种选择是使用文件。 RandomAccessFile
可能有助于手动执行此操作,或者可能有一些库为您提供阵列接口并在后台处理文件I / O.