java-如果可能,如何在java中仅使用一个for循环在数组中的特定元素之前添加元素
编码新手,只是想知道这是否可能。如果我有一个 (1,1,1,2,3) 数组和一个单独的空数组,我将在其中放置我的输出,是否可以仅使用一个 for 循环使每个元素在它之前添加所有元素。所以输出将是这样的(1,2,3,5,8)。所以它会是 (1, 1+1, 1+1+1, 1+1+1+2, 1+1+1+2+3)。我已经能够使用两个 for 循环来做到这一点,但无法找到一种方法来做到这一点。在此先感谢您的帮助。
回答
如果您不想自己实现,已经有一种方法可以使用:
int[] nums = {1, 1, 1, 2, 3};
Arrays.parallelPrefix(nums,Integer::sum);
System.out.println(Arrays.toString(nums));
//[1, 2, 3, 5, 8]
如果您还需要进行除累积总和之外的其他计算,这将非常有用。例如,如果您想将元素相乘而不是相加:
int[] nums = {1, 2, 3, 4, 5};
Arrays.parallelPrefix(nums, (i,j) -> i*j);
System.out.println(Arrays.toString(nums));
//[1, 2, 6, 24, 120]
来自Arrays.parallelPrefix文档,parallelPrefix(int[] array, IntBinaryOperator op)它接受一个 int 数组(long[]、double[] 也有重载方法......)
使用提供的函数并行累积给定数组的每个元素。例如,如果数组最初保存 [2, 1, 0, 3] 并且操作执行加法,则在返回时数组保存 [2, 3, 3, 6]。对于大型数组,并行前缀计算通常比顺序循环更有效。
THE END
二维码