我有二维数组看起来像那样:
1 2 3
4 5 6
7 8 9
我希望将每一行的每一行复制一下,并使用我的方法生成新的第一行,如下所示:
x x x
1 2 3
4 5 6
复制前的最后一行将被删除。有没有更好的方法来做到这一点,而不仅仅是将所有内容复制到新数组,然后将所有内容复制回原始数组?
答案 0 :(得分:0)
您可以在不创建临时数组的情况下移动值:
for (int j = arr.GetLength(1) - 1; j > 0 ; j--) // replaces the values
for (int i = 0; i < arr.GetLength(0); i++) // of each row with the
arr[i, j] = arr[i, j - 1]; // previous row values
然后,复制新值:
for (int i = 0; i < arr.GetLength(0); i++)
arr[i, 0] = /* new row values */
答案 1 :(得分:0)
我相信这个功能能达到你想要的效果;
public int?[,] PushDown(int?[,] intArray)
{
for (var i = intArray.GetLength(0) - 1; i >= 0; i--)
{
for (var j = intArray.GetLength(0) - 1; j >= 0; j--)
{
if ((i - 1) < 0)
{
intArray[i, j] = null;
}
else
{
intArray[i, j] = intArray[i - 1, j];
}
}
}
return intArray;
}