标签: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
原文地址:http://7371901.blog.51cto.com/7361901/1598604