我的方法的作品,但顯然是Hackerrank它與大數字打交道時的速度不夠快。我如何優化它? n是數組大小,k是數組元素應該旋轉的次數。優化arrayRotateLeft方法
public static int[] arrayLeftRotation(int[] a, int n, int k) {
int[] holder = new int[n];
for(int m=0; m<k; m++)
{
for(int b = 0; b<n; b++)
{
if(b==0) holder[n-1]=a[b];
else holder[b-1]=a[b];
}
a = holder;
holder = new int[n];
}
return a;
}
你必須使用一個數組?您可以使用'Deque'並從頭部移除元素並將其添加到尾部。如果你需要一個數組,那麼你應該把它當作圓形並有一個指針「第一」元素,並旋轉陣列時移指針。 –
那麼參數需要保持不變,我需要返回一個數組。 – Bloodluster
如果需要使用數組,我不認爲你的代碼需要優化 –