目錄
一、題目描述
二、解題思路
三、**實現
給定乙個 n × n 的二維矩陣表示乙個影象。
將影象順時針旋轉 90 度。
說明:
你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另乙個矩陣來旋轉影象。示例 1:
給定 matrix =
[[1,2,3],
[4,5,6],
[7,8,9]
],原地旋轉輸入矩陣,使其變為:
[[7,4,1],
[8,5,2],
[9,6,3]
]
示例 2:
給定 matrix =唉,一上來就想著從外圈一圈一圈的往裡操作,每次交換四個數字,結果細節還挺煩人的……搞得耗時久了一點。[[ 5, 1, 9,11],
[ 2, 4, 8,10],
[13, 3, 6, 7],
[15,14,12,16]
], 原地旋轉輸入矩陣,使其變為:
[[15,13, 2, 5],
[14, 3, 4, 1],
[12, 6, 8, 9],
[16, 7,10,11]
]
看了一下題解,竟然忘了轉置的操作……這一看,行變成列,在交換下列的順序不就是了嘛,或者先交換行的順序在轉置也行啊。
雖然題目不難,但是別人有更好的方法就值得記錄下來,想大佬們學習。
#include using namespace std;
//一圈一圈的去交換數即可(耗時4ms)
void rotate(vector>& matrix)
r1++;
c1++;
r2--;
c2--; }}
//官方做法:先上下翻轉,再主對角線翻轉(耗時0ms)
void rotate(vector>& matrix)
} // 主對角線翻轉
for (int i = 0; i < n; ++i) }}
int main() ,,,, };
rotate(matrix);
for (auto x : matrix)
cout << endl;
} return 0;
}
LeetCode48, 如何讓矩陣原地旋轉90度
題目的要求很簡單,給定乙個二維方形矩陣,要求返回矩陣旋轉90度之後的結果。下面我們來看兩個例子 這個 一看就明白了,也就是說我們需要將乙個二維矩陣順時針旋轉90度。這個題意我們都很好理解,但是題目當中還有乙個限制條件 我們不能額外申請其他的陣列來輔助,也就是對我們的空間利用進行了限制。如果沒有這個條...
leetcode 21 旋轉矩陣
給定乙個 n n 的二維矩陣表示乙個影象。將影象順時針旋轉 90 度。說明 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另乙個矩陣來旋轉影象。像剝洋蔥一樣,一圈一圈旋轉,每一圈,分為四個元素的置換。算出來四個座標就行 class solution def rotate se...
推到 旋轉矩陣公式 旋轉矩陣公式推導
1.在二維平面中 如下圖所示,在xoyxoy平面中有一向量op x,y top x,y t,旋轉 角後變為向量op x y top x y t。據圖可得 x op cos y op sin x op cos y op sin 經旋轉 角後有 x op cos op cos cos sin sin x...