##问题描述 You are given an n x n 2D matrix representing an image.
Rotate the image by 90 degrees (clockwise).
给定一个n*n的二位数组,顺时针转90度 1 2 3 4
5 6 7 8
9 0 1 2
3 4 5 6
转成
3 9 5 1
4 0 6 2
5 1 7 3
6 2 8 4
##解题思路 思路非常简单,每列数据从下到上赋值给新的数组每行从左到右即可
##代码
void rotate(int** matrix, int matrixRowSize, int matrixColSize)
{
//分配内存保存新的数组
int **newArr = (int**)malloc(matrixColSize*sizeof(int*));
for (int index = 0; index < matrixColSize; index++)
{
newArr[index] = (int*)malloc(matrixRowSize*sizeof(int));
}
//每列数据从下到上赋值给新的数组每行从左到右赋值
int row = 0;
for (int j = 0; j < matrixColSize; j++)
{
int col = 0;
for (int i = matrixRowSize - 1; i >= 0; i--)
{
newArr[row][col++] = matrix[i][j];
}
row++;
}
//给原数组赋值
for (int i = 0; i < matrixRowSize; i++)
{
for (int j = 0; j < matrixColSize; j++)
{
int a = newArr[i][j];
printf("%d\n", newArr[i][j]);
matrix[i][j] = newArr[i][j];
}
}
}