顺时针旋转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

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务