码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode]48 Rotate Image

时间:2015-01-03 13:23:23      阅读:309      评论:0      收藏:0      [点我收藏+]

标签:leetcode

https://oj.leetcode.com/problems/rotate-image/

http://blog.csdn.net/linhuanmars/article/details/21503683

public class Solution {
    
    // Assume it is a n * n.
    public void rotate(int[][] matrix) 
    {
        // Solution A:
        // rotate_ExtraMatrix(matrix);
        
        // Solution B:
        rotate_TwoRotate(matrix);
    }
    
    ////////////////////
    // Solution A: ExtraMatrix
    //
    private void rotate_ExtraMatrix(int[][] matrix)
    {
        int len = matrix.length;
        int[][] toReturn = new int[len][len];
        
        // Rotate
        for (int i = 0 ; i < len ; i ++)
        {
            for (int j = 0 ; j < len ; j ++)
            {
                toReturn[i][j] = matrix[len - 1 - j][i];
            }
        }
        
        // Copy
        for (int i = 0 ; i < len ; i ++)
        {
            for (int j = 0 ; j < len ; j ++)
            {
                matrix[i][j] = toReturn[i][j];
            }
        }
    }

    ////////////////////
    // Solution B: TwoRotate
    //    
    private void rotate_TwoRotate(int[][] matrix)
    {
        // AAAAA
        // BBBBB
        // CCCCC
        //
        // =>
        //
        // CCCCC
        // BBBBB
        // AAAAA
        int len = matrix.length;
        int mid = len / 2;
        for (int i = 0 ; i < len ; i ++)
        {
            for (int j = 0 ; j < mid ; j ++)
            {
                int temp = matrix[len - 1 - j][i];
                matrix[len - 1 - j][i] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }
        
        // Swap corner
        // M A A A
        // B M A A
        // B B M A
        // B B B M
        //
        // =>
        // M B B B
        // A M B B
        // A A M B
        // A A A M
        for (int j = 0 ; j < len ; j ++)
        {
            for (int i = 0 ; i < j ; i ++)
            {
                int temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }
    } 
}


[LeetCode]48 Rotate Image

标签:leetcode

原文地址:http://7371901.blog.51cto.com/7361901/1598604

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!