首页 > 解决方案 > 大小为 10^8 的数组作为 Java 中的输入

问题描述

如何将 size<=10^8 的数组作为输入并对其执行操作? arr[i]<=10^8.

下面的代码给出了运行时错误和 java.lang.OutOfMemoryError。我已经多次收到这个问题,但从未得到答案,因为它对 n 和 的大值给出了错误arr[i]。我知道它不能以下面给出的方式完成。所以问题是,如何在 Java 中完成?

n=100000000;//User input
int[] arr=new int[n];
int[] b=new int[n];
for(int i=0;i<n;i++)
{
    b[i]=arr[i]+1;
}

标签: javaarrays

解决方案


首先,调查是否真的有必要将整个数组保存在内存中。在许多情况下,您只需一次处理一个元素即可执行所需的操作。

如果确实需要存储数组,则在示例中分配两个 int 数组,每个数组有 1e8 个元素。他们大约需要 800MB 的内存。这在现代硬件上并非遥不可及。只需确保以足够的堆空间启动 JVM。请参阅-Xmx-Xms选项。


推荐阅读