leetcode做题笔记54

给你一个 mn 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

思路一:模拟题意

cpp 复制代码
int* spiralOrder(int** matrix, int matrixSize, int* matrixColSize, int* returnSize){
    int m = matrixSize;      
    int n = matrixColSize[0];
    int *res = (int*)malloc(sizeof(int) * m * n);
    int i,idx = 0,up = 0,down = m - 1,left = 0,right = n - 1;
    while (up <= down && left <= right) {
        for (i = left; i <= right; i++) { 
            res[idx++] = matrix[up][i];
        }
        up++;
        for (i = up; i <= down; i++) {  
            res[idx++] = matrix[i][right];
        }
        right--;
        for (i = right; i >= left && up <= down; i--) {
            res[idx++] = matrix[down][i];
        }
        down--;
        for (i = down; i >= up && left <= right; i--) {
            res[idx++] = matrix[i][left];
        }
        left++;
    }
    *returnSize = idx;
    return res;
}

时间复杂度O(n^2),空间复杂度O(n)

分析:

本题要按顺时针螺旋顺序输出矩阵内的数,可想到利用循环模拟题意作答,设置left,right,up,down来限制输出,使res数组按顺时针顺序存储,最后输出res。

总结:

本题考察对矩阵的理解,模仿题意设置限制条件即可得到答案。

相关推荐
Sarvartha13 分钟前
递归、回溯与动态规划学习笔记
笔记·学习·动态规划
眼镜哥(with glasses)23 分钟前
网络技术三级考试综合题笔记整理(第二题、第三题)
网络·笔记·智能路由器
qq_4017004124 分钟前
顺序、二分、插值、斐波那契查找算法
数据结构·算法·排序算法
x_xbx25 分钟前
LeetCode:26. 删除有序数组中的重复项
数据结构·算法·leetcode
WitsMakeMen26 分钟前
RoPE 算法原理?算法为什么只和相对位置有关
人工智能·算法·llm
半壶清水39 分钟前
[软考网规考点笔记]-数据通信基础之差错控制编码技术
网络·笔记·网络协议·tcp/ip
0 0 043 分钟前
CCF-CSP 38-4 月票发行【C++】考点:动态规划DP+矩阵快速幂
c++·算法·动态规划·矩阵快速幂
左左右右左右摇晃1 小时前
Java List集合
笔记
北漂Zachary1 小时前
Mysql中使用sql语句生成雪花算法Id
sql·mysql·算法
OxyTheCrack1 小时前
【C++】详细拆解std::mutex的底层原理
linux·开发语言·c++·笔记