首页 > 试题广场 >

顺时针旋转矩阵

[编程题]顺时针旋转矩阵
  • 热度指数:60050 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。

给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵。

数据范围:,矩阵中的值满足

要求:空间复杂度 ,时间复杂度
进阶:空间复杂度 ,时间复杂度
示例1

输入

[[1,2,3],[4,5,6],[7,8,9]],3

输出

[[7,4,1],[8,5,2],[9,6,3]]
int** rotateMatrix(int** mat, int matRowLen, int* matColLen, int n, int* returnSize, int** returnColumnSizes ) {
    int **res,i,j;
    res = (int**)malloc(matRowLen*sizeof(int*));
    for(i=0;i<matRowLen;i++) {
        res[i] = (int*)malloc((*matColLen)*sizeof(int));
    }
    for(i=0;i<matRowLen;i++) {
        for(j=0;j<*matColLen;j++) {
            res[i][j] = mat[matRowLen-j-1][i];
        }
    }
    *returnSize = matRowLen;
    *returnColumnSizes = matColLen;
    return res;
}

编辑于 2024-03-13 15:21:20 回复(0)
#include <string.h>
int** rotateMatrix(int** mat, int matRowLen, int* matColLen, int n, int* returnSize, int** returnColumnSizes ) {
    int **pt = (int **)malloc(sizeof(int*)*n);
    memset(pt, 0, sizeof(int*)*n);
    returnColumnSizes[0] = malloc( sizeof( int ) * n );
    for(int i =0;  i < n; i++)
    {
        pt[i] = (int *)malloc(sizeof(int) * (n));
        memset(pt[i], 0, sizeof(int) * (n));
        returnColumnSizes[0][i] = n;
    }
    *returnSize = n;

    for(int i =0; i < n;i++)
    {
        for(int j=0;j<n;j++)
        {
            pt[j][n-i-1]= mat[i][j];
        }
    }
    return pt;
}
发表于 2023-02-19 12:12:07 回复(0)

问题信息

难度:
3条回答 36708浏览

热门推荐

通过挑战的用户

查看代码