数値の配列を受け取り、数値をシフトし、シフトされた配列を返すメソッドを作成しました。
次のように:
private static int[] ShiftArray(int[] arr, int shift)
{
shift = shift % arr.Length;
int[] tmpArr = new int[shift];
for (int i = 0; i < tmpArr.Length; i++)
{
tmpArr[i] = arr[arr.Length - 1 - i];
}
for (int i = arr.Length - 1; i >= shift; i--)
{
int index = Math.Abs(i - shift);
if (index >= 0)
{
arr[i] = arr[index];
}
}
for (int i = 0; i < tmpArr.Length; i++)
{
arr[i] = tmpArr[tmpArr.Length - 1 - i];
}
return arr;
}
メモリを消費しないようにメソッドを改善したい。それを改善する方法と、このメソッドに割り当てられているメモリの量を確認する方法について教えていただければ幸いです。
編集
例 1:
Input: int[]{1,2,3,4,5,6}, shift:2
Output: int[]{5,6,1,2,3,4}
例 2:
Input: int[]{1,2,3,4,5,6}, shift:15
Output: int[]{4,5,6,1,2,3}