顺时针旋转矩阵

题目

有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。
给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵。

数据范围:0<n<300,矩阵中的值满足 10000≤val≤1000

要求:空间复杂度 O(N^2),时间复杂度 O(N^2)
进阶:空间复杂度 O(1),时间复杂度 O(N^2)

示例1:

1
2
输入值:[[1,2,3],[4,5,6],[7,8,9]],3
返回值:[[7,4,1],[8,5,2],[9,6,3]]

题解

解题关键

  • 找规律

思路

  • 画图找规律,几何变化->数值变化, 原(i,j)=> 现(j,n-1-i)
  • 利用辅助空间,简化算法

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.*;

public class Solution {

public int[][] rotateMatrix(int[][] mat, int n) {
// write code here
int[][] res = new int[n][n];
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
res[j][n-1-i] = mat[i][j];
}
}
return res;
}
}

顺时针旋转矩阵
http://lhystutest.top/2023/01/01/算法/数组/顺时针旋转矩阵/
作者
lhy
发布于
2023年1月1日
许可协议