因此,目标是将数组中的元素旋转正确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进行复制,以免覆盖以后需要使用的值。

07-28 02:49
查看更多