问题描述:
给出一个用二维矩阵表示的图像返回该图像顺时针旋转90度的结果
扩展:你能使用原地算法解决这个问题么?
思路:对于函数中的一个点,先以y=x为轴作对称,然后以x轴作对称,则相当于该点顺时针旋转90°。所以对于图像来说每个点顺时针旋转了,则图也旋转了。所以可以将图以对角线作对称,然后以中间的横线作对称。
来源自牛客
代码实现:
public class Solution { public void rotate(int[][] matrix) { int n = matrix.length; int[][] tmp = new int[n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n ; j++) { tmp[i][j] = matrix[n - 1 - j][i]; } } for (int i = 0; i < n; i++) { for (int j = 0; j < n ; j++) { matrix[i][j] = tmp[i][j]; } } } }