给定一个N×N的二维矩阵表示图像,90度顺时针旋转图像。
Yes
样例
给出一个矩形[[1,2],[3,4]],90度顺时针旋转后,返回[[3,1],[4,2]]
挑战
标签 Expand 能否在原地完成?
相关题目 Expand
解题思路:
旋转90°其实可以理解为数组先
上下对折
,然后再进行
对角线对折
就ok了。
public class Solution {
/**
* @param matrix: A list of lists of integers
* @return: Void
*/
public void rotate(int[][] matrix) {
// write your code here
if(matrix==null||0==matrix.length) return;
int m = matrix.length;
/**上下进行翻转**/
for(int i=0;i<m/2;i++){
for(int j=0;j<m;j++){
int tmp = matrix[i][j];
matrix[i][j] = matrix[m-1-i][j];
matrix[m-1-i][j] = tmp;
}
}
/**对角线进行翻转**/
for(int i=0;i<m;i++){
for(int j=0;j<i;j++){
int tmp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = tmp;
}
}
}
}