有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。
给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于300。
测试样例:
[[1,2,3],[4,5,6],[7,8,9]],3
返回:[[7,4,1],[8,5,2],[9,6,3]]
import java.util.*; public class Rotate { public int[][] rotateMatrix(int[][] mat, int n) { int tR = 0; int dR = mat.length-1; int tC = 0; int dC = mat[0].length-1; while (tR<dR && tC<dC) { solve(mat, tR++, tC++, dR--, dC--); } return mat; } private void solve(int[][] mat, int tR, int tC, int dR, int dC) { int times = dR - tR; for (int i = 0; i != times; i++) { int tmp = mat[tR][tC+i]; mat[tR][tC+i] = mat[dR-i][tC]; mat[dR-i][tC] = mat[dR][dC-i]; mat[dR][dC-i] = mat[tR+i][dC]; mat[tR+i][dC]= tmp; } } }