48 - RotateImage

Rotate Image

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°。实际问题实际分析,这里不用图形学的选择矩阵的计算方法了。

关键是要把下标计算好,原矩阵的数值应该对应到新的旋转矩阵的那个位置,设计好公式就很容易计算了。

有图好理解,矩阵如下图:



示意图:

	void rotate(vector<vector<int> > &matrix) 
	{
		int n = matrix.size();
		for (int i = 0; i < n / 2; ++i)
		{
			for (int j = i; j < n - 1 - i; ++j)
			{
				int t = matrix[i][j];
				matrix[i][j] = matrix[n - 1 - j][i];
				matrix[n - 1 - j][i] = matrix[n - 1 - i][n - 1 - j];
				matrix[n - 1 - i][n - 1 - j] = matrix[j][n - 1 - i];
				matrix[j][n - 1 - i] = t;
			}
		}
		
	}


你可能感兴趣的:(48 - RotateImage)