Java教程

顺时针旋转矩阵

本文主要是介绍顺时针旋转矩阵,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

链接
有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。
给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵。

import java.util.*;

public class Solution {
    public int[][] rotateMatrix(int[][] mat, int n) {
        if (n <= 1) {
            return mat;
        }

        int row1 = 0, col1 = 0, row2 = n - 1, col2 = n - 1;
        while (row1 < row2 && col1 < col2) {
            for (int i = col1; i < col2; ++i) {
                int distance = i - col1;
                int tmp = mat[row1][i];
                mat[row1][i] = mat[row2 - distance][col1];
                mat[row2 - distance][col1] = mat[row2][col2 - distance];
                mat[row2][col2 - distance] = mat[row1 + distance][col2];
                mat[row1 + distance][col2] = tmp;
            }
            row1++;
            col1++;
            row2--;
            col2--;
        }

        return mat;
    }
}
这篇关于顺时针旋转矩阵的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!