Java 算法-旋转图像(矩阵处理)

2018-01-11  本文已影响0人  琼珶和予

  今天在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;
            }
        }
    }
上一篇 下一篇

猜你喜欢

热点阅读