【发布时间】:2022-01-13 02:12:09
【问题描述】:
我一直在尝试在 java 中反转列表的一部分。
python 中的等价物(虽然可能不是最好的方法 - 我不关心这个,只是想表达我的意思)是:
myList = [0,1,2,3,4,5,6,7,8,9,10]
reverseSlice = myList[2:6]
reverseSlice.reverse()
myList[2:6] = reverseSlice
当我尝试在 Java 中手动实现它时,我尝试了这个:
public static int[] reverse(int[] x,int a1, int a2) {
a1--;
int[] rArr = new int[a2-a1+1];
for (int ind = a1; ind<a2; ind++) {
rArr[a2-ind-1] = x[ind];
}
for (int ind = a1; ind<a2; ind++) {
x[ind] = rArr[ind];
}
return x;
}
但是,当我运行这个时:
int[] cows1 = new int[]{0,1,2,3,4,5,6,7,8,9,10};
cows1 = reverse(cows1,2,6);
for (int i : cows1) {
System.out.print(i + " ");
}
我收到0 4 3 2 1 0 6 7 8 9 10 。
我真的很困惑我是如何得到这个的,因为在我的函数中,我没有引入新值,所以“0”不应该出现。
我的问题:为什么我的代码返回的值不在列表中?
【问题讨论】:
-
两个索引都包含在反转中吗?
-
我试过调试,但还没有真正看到这是怎么回事。
-
@GurkiratSinghGuliani 它应该反转从索引 a1-1 到 a2-1 的所有内容,包括
-
@Ryan Fu 输入数组 ( 0,1,2,3,4,5) 和 reverse(arr,2,4) 输出将是 ( 0,1,4,3,2, 5) ?
-
不要将基于 1 的索引和基于 0 的索引混合在一起。这只会让事情变得混乱。将所有内容都写在从 0 开始的索引中,然后如果您真的需要从 1 开始的索引功能,只需编写一个辅助函数。