package
0.0.0-20230809123828-b071cee2968a
Repository: https://github.com/codehanhan/leetcode-go.git
Documentation: pkg.go.dev

# README

旋转图像

1. 题目描述

给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。

你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。

2. 示例

示例1 1

输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[[7,4,1],[8,5,2],[9,6,3]]

示例2 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]]

示例3

输入:matrix = [[1]]
输出:[[1]]

示例4

输入:matrix = [[1,2],[3,4]]
输出:[[3,1],[4,2]]

提示

  • matrix.length == n
  • matrix[i].length == n
  • 1 <= n <= 20
  • -1000 <= matrix[i][j] <= 1000

3. 解题

对于n*n矩阵 设某一个位置坐标为(x, y),则,旋转后其坐标为(n-y-1, x)

则可推断出:

  • 对于(i, j) -> (n-j-1, i)
  • 对于(n-j-1, i) -> (n-i-1, n-j-1)
  • 对于(n-i-1, n-j-1) -> (n-(n-j-1)-1, n-i-1) = (j, n-i-1)
  • 对于(j, n-i-1) -> (n-(n-i-1)-1, j) = (i, j)

则只需遍历左上角四分之一个矩阵,每次遍历执行上述四步操作,即可将矩阵旋转90度

如果是n*m矩阵