From 11b0d82297ddf648db95093d8bad97fbaa8ff0ae Mon Sep 17 00:00:00 2001 From: Wonder Date: Thu, 2 Oct 2025 22:14:32 +0800 Subject: [PATCH] =?UTF-8?q?=20=F0=9F=94=84Update:=20=E6=97=8B=E8=BD=AC?= =?UTF-8?q?=E5=9B=BE=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 矩阵/{1. 螺旋矩阵.md => 2. 螺旋矩阵.md} | 0 矩阵/3. 旋转图像.md | 64 +++++++++++++++++++++++++ 2 files changed, 64 insertions(+) rename 矩阵/{1. 螺旋矩阵.md => 2. 螺旋矩阵.md} (100%) create mode 100644 矩阵/3. 旋转图像.md diff --git a/矩阵/1. 螺旋矩阵.md b/矩阵/2. 螺旋矩阵.md similarity index 100% rename from 矩阵/1. 螺旋矩阵.md rename to 矩阵/2. 螺旋矩阵.md diff --git a/矩阵/3. 旋转图像.md b/矩阵/3. 旋转图像.md new file mode 100644 index 0000000..1697851 --- /dev/null +++ b/矩阵/3. 旋转图像.md @@ -0,0 +1,64 @@ +# 旋转图像 + +## 题目 + +给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 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]] + + +提示: + +n == matrix.length == matrix[i].length +1 <= n <= 20 +-1000 <= matrix[i][j] <= 1000 + + +## 思路 + +- 观察特点 + - 对角线交换 + - 左右镜像交换 + + +## 代码 + +```java +class Solution { + public void rotate(int[][] matrix) { + + // Init: n(length) + int n = matrix.length; + // Traverse 1 + for (int i = 0; i < n; i++) { + for (int j = i; j < n; j++) { + int tmp = matrix[i][j]; + matrix[i][j] = matrix[j][i]; + matrix[j][i] = tmp; + } + } + // Traverse 2 + for (int i = 0; i < n; i++) { + for (int j = 0; j < n/2; j++) { + int tmp = matrix[i][j]; + matrix[i][j] = matrix[i][n - j - 1]; + matrix[i][n - j - 1] = tmp; + } + } + + } +} +```