顺时针旋转90度矩阵
顺时针旋转矩阵
http://www.nowcoder.com/questionTerminal/2e95333fbdd4451395066957e24909cc
方法一:找规律,发现顺时针旋转90度后的目标矩阵res[i][j]的值等于mat[n-j-1][i]的值。
或者mat[i][j]被旋转到了mat[j][n-i-1]的位置
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[i][j] = mat[n-j-1][i]; //res[j][n-i-1] = mat[i][j]; } } return res; } }
方法二:利用原矩阵中数据的范围为0-300的条件,数据仅利用了int类型32位中的低9位,因此可以利用高位来存新值,低9位存旧值,空间复杂度为O(1)。个人觉得面试这么写才行,线性代数矩阵变换那一套面试官不一定觉得你具备计算机思维能力。这方法来源于:六娃lw