LeetCode-048-旋轉影像
給定一個 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]
]
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/rotate-image
解題思路
首先明確, n * n 的陣列, 忽略最中間那一格, “層數” <= n / 2
然後將每一層看為四個"該層長度 - 1"的部分, 上右下左四部分
然後兩層迴圈, 外層迴圈"層數", 內層迴圈"該層長度 - 1"
然後將每層的四部分數字交換
只要畫個圖弄清楚每個部分元素的索引就很好解決
matrix[layer][layer + i]
// 上
matrix[layer + i][length - layer - 1]
// 右
matrix[length - layer - 1][length - layer - 1 - i]
// 下
matrix[length - layer - i - 1][layer]
// 左
layer
是層數, i
是每層的每個部分的元素的偏移量
程式碼
class Solution {
public void rotate(int[][] matrix) {
int length = matrix.length;
if (length == 0) {
return;
}
// 層數不超過陣列長度 / 2
for (int layer = 0; layer < length / 2; layer++) {
// 將每一層分為四個該層長度 - 1的
for (int i = 0; i < length - layer * 2 - 1; i++) {
// matrix[layer][layer + i]; // 上
// matrix[layer + i][length - layer - 1]; // 右
// matrix[length - layer - 1][length - layer - 1 - i]; // 下
// matrix[length - layer - i - 1][layer]; // 左
int temp = matrix[layer][layer + i];
matrix[layer][layer + i] = matrix[length - layer - i - 1][layer];
matrix[length - layer - i - 1][layer] = matrix[length - layer - 1][length - layer - 1 - i];
matrix[length - layer - 1][length - layer - 1 - i] = matrix[layer + i][length - layer - 1];
matrix[layer + i][length - layer - 1] = temp;
}
}
}
}
相關文章
- LeetCode:旋轉影像LeetCode
- 影像旋轉的FPGA實現(一)FPGA
- LeetCode 48. 旋轉影像LeetCode
- 影像旋原始碼原始碼
- 不適用imrotate 的影像旋轉實現
- 影像的灰度變換——影像旋轉、影像的反色處理、對比度拉伸
- C# 簡易影像處理(包括平移,旋轉,翻轉, 裁切)C#
- 13 款最棒的 jQuery 影像 360° 旋轉外掛jQuery
- 10個有用的jQuery360度旋轉影像外掛jQuery
- OpenCV計算機視覺學習(11)——影像空間幾何變換(影像縮放,影像旋轉,影像翻轉,影像平移,仿射變換,映象變換)OpenCV計算機視覺
- 旋轉變換(一)旋轉矩陣矩陣
- 旋轉字串字串
- 將圖片旋轉(這裡不是旋轉imageView)View
- 三維座標系旋轉——旋轉矩陣到旋轉角之間的換算矩陣
- 旋轉矩陣矩陣
- 矩陣旋轉矩陣
- Activity的旋轉
- 三維旋轉:旋轉矩陣,尤拉角,四元數矩陣
- CSS3動畫(360度旋轉、旋轉放大、放大、移動)CSSS3動畫
- 利用三維旋轉矩陣在空間中旋轉平面矩陣
- | / - 的旋轉效果實現(轉)
- 旋轉演算法演算法
- SVG矩形旋轉動畫SVG動畫
- 卡片旋轉動畫效果動畫
- 剛體在三維空間的旋轉(關於旋轉矩陣、DCM、旋轉向量、四元數、尤拉角)矩陣
- opencv中自定義的雙線性二次插值的影像旋轉及縮放OpenCV
- 如何實現圖片的3D旋轉,而且是不停旋轉?3D
- canvas 圍繞中心旋轉Canvas
- orientationchange 螢幕旋轉事件事件
- SVG 旋轉文字字元SVG字元
- html中圖片旋轉HTML
- 旋轉矩陣推導矩陣
- cad旋轉的快捷鍵命令 cad旋轉方向怎麼調整
- 三維空間 旋轉矩陣 四元數 尤拉角 相互轉換 組合旋轉矩陣
- 影像格式轉換
- 快影app怎麼旋轉影片?快影影片瞬間旋轉的方法教程APP
- 怎麼旋轉圖片?BenVista PhotoZoom Pro旋轉圖片的方法OOM
- 三維重建學習(1):基礎知識:旋轉矩陣與旋轉向量矩陣