请提出一些替代方案来解决暴力解决方案使用具有非常大索引并存储非常大值的数组(非常大意味着超出 INT 的范围)的问题。我正在使用 Java 来解决这个问题。
示例问题: 将大量的鹅卵石放入非常大的一组桶中,然后计算每个桶中的平均鹅卵石。
一种方法是声明一个大数组,并根据用户指定的索引不断放置鹅卵石,然后计算平均值。但是这样我们会为这样的数组使用很大的空间。
最佳答案
如果数组是稀疏的,一个选项可以是索引到值的Map
。
如果所有的数据仍然可以放入内存,索引刚好超出int
的范围,你可以考虑数组的数组。主数组可以包含大小为 1000000000 的数组。此数组中的第 0 个索引将包含值 0-999999999,第一个索引将包含 1000000000-1999999999 等。
另一种选择是使用文件。 RandomAccessFile
可能有助于手动执行此操作,或者可能有一些库为您提供数组接口(interface)并在幕后处理文件 I/O。
关于java - 涉及非常大的数组索引存储非常大的值的问题的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22792097/