leetcodeLC102:rotate-image(Java实现)

题目描述

给出一个用二维矩阵表示的图像

返回该图像顺时针旋转90度的结果

扩展:

你能使用原地算法解决这个问题么?

思路:

1、获取矩阵的行数和列数,比如m行n列的矩阵顺时针旋转90度后就变成n行m列。

2、创建一个新数组other存放旋转后的数据。原矩阵按行按列依次扫描,把握住原矩阵和翻转后的矩阵对应关系是:other[j][row-i-1]=matrix[i][j]

3、最后将other中的元素依次赋值到matrix即可。

注意:原地算法要求改变原来的matrix,我本想通过更改引用的方式,但是无法通过测试。通过matrix=other这种方式直接让matrix舍弃原来的引用指向,从而指向other数组对象。这种方式是不行的,必须依次将matrix修改才行。

public class Solution {
    public  void rotate(int[][] matrix) {
        int i, j;
        int rows, colomns;

        //java中获取二维数组行和列的方式
        colomns = matrix[0].length;
        rows = matrix.length;

        int[][] other = new int[colomns][rows];

        for (i = 0; i < rows; i++)
            for (j = 0; j < colomns; j++) {
                other[j][rows - i - 1] = matrix[i][j];
            }

        //修改原matrix
        for (i = 0; i < rows; i++) {
            for (j = 0; j < colomns; j++) {
                matrix[i][j]=other[i][j];
            }
        }
       //使用matrix=other这种方法取代上面的修改是不行的
    }
}

猜你喜欢

转载自blog.csdn.net/Zhongtongyi/article/details/107222889