Rotate Image

来源:互联网 发布:c语言struct 编辑:程序博客网 时间:2024/06/08 01:10

问题描述

You are given an n x n 2D matrix representing an image.

Rotate the image by 90 degrees (clockwise).

For example:
Input:  [[1, 2], [3, 4]]
Output: [[3, 1], [4, 2]];

思考:怎么变换使用O(1)的空间

想法:先对矩阵进行对角线变换,然后对每一行,进行逆序变换

public class Solution {    public void rotate(int[][] matrix) {        diagSwap(matrix);        rowReverse(matrix);    }    private void diagSwap(int[][] matrix){        if (matrix.length < 2)            return;        for(int i = 0; i < matrix.length; i++)            for(int j = 0; j < i; j++)                swap(i, j, j, i, matrix);    }    private void swap(int oR, int oC, int Tr, int Tc, int[][] matrix){        int temp = matrix[oR][oC];        matrix[oR][oC] = matrix[Tr][Tc];        matrix[Tr][Tc] = temp;    }    private void rowReverse(int[][] matrix){        if(matrix.length == 0 )            return ;              int len = matrix[0].length;        for(int i = 0; i < matrix.length; i++)            for(int j = 0; j < (len >> 1); j++)                swap(i, j, i, len - j - 1, matrix);    }}
0 0
原创粉丝点击