leetCode48 旋轉矩陣

2021-10-12 10:08:20 字數 1285 閱讀 5928

目錄

一、題目描述

二、解題思路

三、**實現

給定乙個 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...