您的位置:首页 > 其它

LeetCode Rotate Image(矩阵的旋转)

2015-07-18 10:50 489 查看

You are given an n x n 2D matrix representing an image.

Rotate the image by 90 degrees (clockwise).

Follow up:

Could you do this in-place?

题意:给出一个矩阵,问顺时针旋转90的矩阵

思路:假设矩阵的维数为n,则(x,y)矩阵后的位置为(y,n - 1 -x),其整个变换过程为(x,y)->(y, n - 1 - x)->(n - 1 -x, n - 1 - y)->(n - 1 - y,  x)->(x, y)

具体代码如下

public class Solution {
public void rotate(int[][] matrix)
{
int n = matrix.length;
int m = n / 2;
for (int i = 0; i < m; i++)
{
for (int j = i; j < n - 1 - i; j++)
{
int startx = i, starty = j;
int x = startx, y = starty;
int newx = y, newy = n - 1 - x;
int tmp1 = matrix[x][y], tmp2;

while (newx != startx || newy != starty)
{
tmp2 = matrix[newx][newy];
matrix[newx][newy] = tmp1;
x = newx; y = newy;
newx = y; newy = n - 1 - x;
tmp1 = tmp2;
}

matrix[startx][starty] = tmp1;
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: