gpt4 book ai didi

Java倒排数组方法

转载 作者:行者123 更新时间:2023-11-29 06:34:18 25 4
gpt4 key购买 nike

我正在尝试创建一个接受数组然后反向返回该数组的方法。我编写的代码反向返回数组,但是,前两个值现在为 0。有人知道我做错了什么吗?

public static int[] reverse(int[] x)
{
int []d = new int[x.length];

for (int i = 0; i < x.length/2; i++) // for loop, that checks each array slot
{
d[i] = x[i];
x[i] = x[x.length-1-i]; // creates a new array that is in reverse order of the original
x[x.length-1-i] = d[i];
}
return d; // returns the new reversed array
}

最佳答案

您正在从一个未初始化 数组中赋值 dx - 这就是零(Java 中 int 的默认值)的来源。

IIUC,您正在混合使用两种反向策略。

如果你正在创建一个新数组,你不需要运行超过原始数组的一半,而是超过它的全部:

public static int[] reverse(int[] x) {

int[] d = new int[x.length];


for (int i = 0; i < x.length; i++) {
d[i] = x[x.length - 1 -i];
}
return d;
}

或者,如果你想反转数组就地,你不需要临时数组,只需要一个变量(最多 - 也有切换两个 int 的方法没有额外的变量,但这是一个不同的问题):

public static int[] reverseInPlace(int[] x) {
int tmp;

for (int i = 0; i < x.length / 2; i++) {
tmp = x[i];
x[i] = x[x.length - 1 - i];
x[x.length - 1 - i] = tmp;
}
return x; // for completeness, not really necessary.
}

关于Java倒排数组方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24518218/

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