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
- 力扣-48 旋轉影像力扣
- LeetCode 48. 旋轉影像LeetCode
- 影像縮放、旋轉、翻轉、平移
- 影像旋轉的FPGA實現(一)FPGA
- 不適用imrotate 的影像旋轉實現
- 高效能運算-NEON-影像旋轉
- 影像旋原始碼原始碼
- C# 簡易影像處理(包括平移,旋轉,翻轉, 裁切)C#
- [轉]旋轉矩陣:點旋轉和座標系旋轉矩陣
- OpenCV計算機視覺學習(11)——影像空間幾何變換(影像縮放,影像旋轉,影像翻轉,影像平移,仿射變換,映象變換)OpenCV計算機視覺
- 旋轉字串字串
- 旋轉相簿
- 將圖片旋轉(這裡不是旋轉imageView)View
- 三維座標系旋轉——旋轉矩陣到旋轉角之間的換算矩陣
- AVL樹旋轉
- 旋轉連結串列
- ubuntu螢幕旋轉Ubuntu
- 旋轉演算法演算法
- CSS3動畫(360度旋轉、旋轉放大、放大、移動)CSSS3動畫
- cad旋轉的快捷鍵命令 cad旋轉方向怎麼調整
- 怎麼旋轉圖片?BenVista PhotoZoom Pro旋轉圖片的方法OOM
- LeetCode 189 旋轉陣列LeetCode陣列
- Android 禁止螢幕旋轉Android
- SVG矩形旋轉動畫SVG動畫
- SVG 旋轉文字字元SVG字元
- 卡片旋轉動畫效果動畫
- canvas 圍繞中心旋轉Canvas
- p361旋轉中心
- orientationchange 螢幕旋轉事件事件
- 箭頭旋轉程式碼
- 【LeetCode】796. 旋轉字串LeetCode字串
- CAD如何使用旋轉命令
- 旋轉圖片驗證
- 簡單的css3頭像旋轉與3D旋轉效果CSSS33D
- CVPR 2020 | 反傳統的無監督人臉旋轉方案:旋轉-渲染
- opencv中自定義的雙線性二次插值的影像旋轉及縮放OpenCV