题目: 把一个长宽都为n的二维数组旋转90度
看到过有种讨巧的办法,时间复杂度低,但是感觉不知道是基于什么思路想出来的,所以我还是在这里记录下我自己的方法,也是很普通的那种。
所以,长度为N, 当前点坐标为(x, y)的话,前一点的坐标为 (y, n - 1 - x)。找到这个关系实现起来就很容易了
static int[,] RotateImage(int[,] arr)
{
int len = arr.Length;
int[,] result = new int[len, len];
for (int i = 0; i < len; i++)
{
for (int j = 0; j < len; j++)
{
result[i, j] = arr[j, len - i - 1];
}
}
return result;
}