gpt4 book ai didi

java - 将整数数组对折

转载 作者:行者123 更新时间:2023-11-29 04:29:23 31 4
gpt4 key购买 nike

我正在研究一种方法,该方法将接受一个整数数组并将其对折 x 次。此方法将采用像 {1,2,3,4,5} 这样的整数数组,如果折叠一次则输出数组 {6,6,3}。或者它可以将输入 {5,6,7,8} 和输出 {13,13} 折叠一次。

如果输入被折叠两次,那么 {5,6,7,8} 将变成 {26}。

import java.util.Arrays;
public class Kata
{
public static int[] foldArray(int[] array, int runs)
{
int[] tempArray = array;

for(int j=0; j<runs; j++){
for(int i=0; i<tempArray.length; i++){
tempArray[i] += tempArray[tempArray.length - i];
}
}

int[] outputArray = Arrays.copyOfRange(tempArray, (tempArray.length/2));
return outputArray;
}
}

最佳答案

您的实现的问题在于您使用 tempArray 的方式:

int[] tempArray = array;

这将 tempArray “别名”为原始 array,因此对 tempArray 的任何修改也会发生在原始数组上。这意味着 tempArraylength 不会随运行而改变,因此第一次折叠之后的任何折叠都是无效的。

您需要在外循环的每次迭代中制作 tempArray 初始 ⌈n/2⌉ 元素的副本。要向上舍入一半长度,请使用以下表达式:

int halfLength = (tempArray.length+1)/2;
int[] tempArray = Arrays.copyOfRange(tempArray, halfLength);

这将处理奇数长度的数组。

在每次外部循环迭代结束时,将 array 替换为 tempArray

关于java - 将整数数组对折,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44463020/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com