我需要在java中初始化一个长度为k+1的long[]。但是 k 的类型很长,长度最多可以达到 10^12。因此,程序会引发不兼容的类型错误。
Error: java: incompatible types: possible lossy conversion from long to int
我该怎么办?
编辑: 我不能转换为 int,因为 k 的长度可以是 10^12
这就是Java。 对于单个维度,您根本不能拥有大于 ~20 亿个条目(即int的最大正值(的数组。语言规范禁止这样做。 维度表达式必须具有int值。
因此,尝试为大小设置一个长值是没有意义的;你不能。
此外,当然,正如评论中已经指出的那样,您谈论的是需要大约 8TB 的地址空间,因此这不会很好地工作还有一个次要原因。
所以,要回答"我该怎么办?"这个具体问题,你有一个选择。
接受大约 20 亿个条目的限制,或
从根本上重新设计您的数据和算法,以应对您希望处理的大数据。
既然你说这是USACO,我想重点是让你为上述两个选项中的第二个找出一些东西。