LeetCode(48):旋轉圖像

Medium!

題目描述:

給定一個 × n 的二維矩陣表示一個圖像。

將圖像順時針旋轉 90 度。

說明:

你必須在原地旋轉圖像,這意味着你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉圖像。

示例 1:

給定 matrix = 
[
  [1,2,3],
  [4,5,6],
  [7,8,9]
],

原地旋轉輸入矩陣,使其變爲:
[
  [7,4,1],
  [8,5,2],
  [9,6,3]
]

這種方法首先對原數組取其轉置矩陣,然後把每行的數字翻轉可得到結果,如下所示(其中藍色數字表示翻轉軸):

1  2  3       1  4  7       7  4  1

4  5  6  -->   2  5  8   -->     8  5  2  

7  8  9       3  6  9          9  6  3

void rotate(vector<vector<int>>&matrix)
{
	int n=matrix.size();
	//按對角線交換
	for(int i=0;i<n;++i)
	{
		for(int j=i+1;j<n;j++)
		{
			int temp = matrix[i][j];
			matrix[i][j] = matrix[j][i];
			matrix[j][i] = temp;
		}
	}
	
	//按中間線交換
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n/2;j++)
		{
			int temp = matrix[i][j];
			matrix[i][j] = matrix[i][n-1-j];
			matrix[i][n-1-j] = temp;
		}
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章