LeetCode 48 旋轉影象
給定一個 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] ]
在計算機影象處理裡,旋轉圖片是很常見的,由於圖片的本質是二維陣列,所以也就變成了對陣列的操作處理,翻轉的本質就是某個位置上數移動到另一個位置上,比如用一個簡單的例子來分析:
1 2 3 7 4 1
4 5 6 --> 8 5 2
7 8 9 9 6 3
對於90度的翻轉有很多方法,一步或多步都可以解,我們先來看一種直接的方法,對於當前位置,計算旋轉後的新位置,然後再計算下一個新位置,第四個位置又變成當前位置了,所以這個方法每次迴圈換四個數字,如下所示:
1 2 3 7 2 1 7 4 1
4 5 6 --> 4 5 6 --> 8 5 2
7 8 9 9 8 3 9 6 3
解法一
class Solution { public: 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 tmp = matrix[i][j]; matrix[i][j] = matrix[n-j-1][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] = tmp; } } };
還有一種解法,首先以從對角線為軸翻轉,然後再以x軸中線上下翻轉即可得到結果,如下圖所示(其中藍色數字表示翻轉軸):
1 2 3 9 6 3 7 4 1
4 5 6 --> 8 5 2 --> 8 5 2
7 8 9 7 4 1 9 6 3
class Solution {
public:
void rotate(vector<vector<int> > &matrix) {
int n = matrix.size();
for (int i = 0; i < n - 1; ++i) {
for (int j = 0; j < n - i; ++j) {
swap(matrix[i][j], matrix[n - 1- j][n - 1 - i]);
}
}
for (int i = 0; i < n / 2; ++i) {
for (int j = 0; j < n; ++j) {
swap(matrix[i][j], matrix[n - 1 - i][j]);
}
}
}
};
最後再來看一種方法,這種方法首先對原陣列取其轉置矩陣,然後把每行的數字翻轉可得到結果,如下所示(其中藍色數字表示翻轉軸):
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
解法三
class Solution {
public:
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) {
swap(matrix[i][j], matrix[j][i]);
}
reverse(matrix[i].begin(), matrix[i].end());
}
}
};
相關推薦
LeetCode : 48. 旋轉影象(Rotate Image)解答
48. 旋轉影象 給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在 原地 旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要 使用另一個矩陣來旋轉影象。 示例 1: 給定 matrix = [
leetcode 48:旋轉影象
先對角線的對換 然後列對換 void rotate(std::vector<std::vector<int>>& matrix) { int num=matrix.size()-1; int temp=0; for(int
leetcode-48 旋轉影象
給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。 示例 : 給定 matrix = [ [1,2,3], [4,5,6],
LeetCode 48.旋轉影象(C++)
給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。 示例 1:
LeetCode 48 旋轉影象
給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。 示例 1: 給定 matrix = [ [1,2,3], [4,5,6],
【LeetCode】48. 旋轉影象
題目連結:https://leetcode-cn.com/problems/rotate-image/description/ 題目描述 給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在原地旋轉影象,這意味著你需要直接修改輸入
Leetcode演算法Java全解答--48.旋轉影象(Rotate Image)
Leetcode演算法Java全解答–48.旋轉影象(Rotate Image) 文章目錄 Leetcode演算法Java全解答--48.旋轉影象(Rotate Image) 題目 想法 結果 總結 程式碼
LeetCode:【48. 旋轉影象】
題目給定一個 n × n 的二維矩陣表示一個影象。將影象旋轉 90 度(順時針)。注意:你必須在原矩陣中旋轉影象,請不要使用另一個矩陣來旋轉影象。例 1:給出的輸入矩陣 = [ [1,2,3], [4,5,6], [7,8,9] ], 旋轉輸入矩陣,使其變為
LeetCode 48. 旋轉圖像(Rotate Image)
return leetcode 二維 get lee 圖像 代碼 必須 tps 題目描述 給定一個 n × n 的二維矩陣表示一個圖像。 將圖像順時針旋轉 90 度。 說明: 你必須在原地旋轉圖像,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉圖像。
LeetCode題目--旋轉影象(python實現)
題目 給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。 示例 1: 給定 matrix =
Leetcode 48.旋轉矩陣
旋轉矩陣 給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。 示例 1: 給定 matrix = [ [1,2,3], [4
48. 旋轉影象(JavaScript)
給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。 示例 1: 給定 matrix = [ [1,2,3], [4,5,6],
leetcode-48.旋轉圖像
tco back end tar tps 鏡像 -a class lee leetcode-48.旋轉圖像 point: 數組 題意 給定一個 n × n 的二維矩陣表示一個圖像。 將圖像順時針旋轉 90 度。 說明: 你必須在原地旋轉圖像,這意味著你需要直接修改輸入的二
leetcode 48. 旋轉圖像(Rotate Image)
++ leetcode .com 題目 順時針 http baidu https leet 目錄 題目描述: 示例 1: 示例 2: 解法:
Leetcode 48:旋轉影象(最詳細的解法!!!)
給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。 示例 1: 給定 ma
【leetcode】#陣列【Python】48. Rotate Image 旋轉影象
連結: 題目: 給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。 示
LeetCode演算法題48:旋轉影象解析
給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。 示例 1: 給定 matrix = [ [1,2,3], [4,5,6], [
leetCode 48.Rotate Image (旋轉影象) 解題思路和方法
Rotate Image You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees
LeetCode 48. Rotate Image(旋轉圖像)
this i++ 目標 gree ota ++ right 個數 方法 You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). F
swift 旋轉影象 LeetCode
給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。 class Solution { func rotate