今天在lintCode做了一道题,自己想了一下做法,做出来,但是觉得有必要记录下来。
题意:
给定一个N×N的二维矩阵表示图像,90度顺时针旋转图像。
样例:
给出一个矩形[[1,2],[3,4]],90度顺时针旋转后,返回[[3,1],[4,2]]
挑战:
能否在原地完成?
1.解题思路
这个题乍一看懵逼,其实非常的简单。下面我用图来表示解题思路:
2.代码
public void rotate(int[][] matrix) {
if (matrix.length == 0 || matrix[0].length == 0) {
return;
}
//顺时针旋转270度
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < i; j++) {
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
//逆时针旋转180度
for(int i = 0; i < matrix.length; i++) {
for(int j = 0; j < matrix[0].length / 2; j++) {
int temp = matrix[i][j];
matrix[i][j] = matrix[i][matrix[0].length - 1 - j];
matrix[i][matrix[0].length - 1 - j] = temp;
}
}
}