zl程序教程

您现在的位置是:首页 >  其他

当前栏目

旋转图像-c语言,时间复杂度哦o(n)空间复杂度o(1)

语言 时间 图像 空间 旋转 复杂度
2023-09-14 09:06:53 时间

旋转图像-c语言,时间复杂度哦o(n)空间复杂度o(1)

给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。

你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。

示例 1:

输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[[7,4,1],[8,5,2],[9,6,3]]

示例 2:

输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]

解题代码如下,下面这个解题代码还是很有水平的,感兴趣的可以学习学习:

void rotate(int** matrix, int matrixSize, int* matrixColSize){
    int t;
    int i,j;
  
    for(i=0;i<matrixSize;i++){
        for(j=i;j<matrixSize-i-1;j++){
            printf("%d %d ",i,j);
            t=matrix[i][j];
            int num=3;
            int x=i,y=j;
            while(num--){
                   printf("x y %d %d ",x,y);
                matrix[x][y]=matrix[matrixSize-y-1][x];
                int p=x;
                x=matrixSize-y-1;


                y=p;
            }
            matrix[x][y]=t;

        }
    }

}