因此,目标是将数组中的元素旋转正确a
次。
举个例子;如果是a==2
,那么array = {0,1,2,3,4}
将成为array = {3,4,0,1,2}
这是我所拥有的:
for (int x = 0; x <= array.length-1; x++){
array[x+a] = array[x];
}
但是,这无法解决
[x+a]
何时大于数组的长度。我读到我应该将更大的存储在另一个Array中,但是看到a
是变量,我不确定这是最好的解决方案。提前致谢。
最佳答案
在代码中添加模数组长度:
// create a newArray before of the same size as array
// copy
for(int x = 0; x <= array.length-1; x++){
newArray[(x+a) % array.length ] = array[x];
}
您还应该创建一个新的
Array
进行复制,以免覆盖以后需要使用的值。