leetcode做题笔记54

给你一个 m 行 n 列的矩阵 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。

总结:

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

相关推荐
Zootopia6269 小时前
多架 eVTOL集群排班调度方案思考
人工智能·算法·数学建模·matlab·动态规划·无人机·evtol
和裕10 小时前
年度框架直供 vs 零散按需采购:定制纸箱采购成本、交付与服务核心区别全对比
大数据·运维·网络·人工智能·算法
朝朝辞暮i10 小时前
C++ 第 13 课:值传递 —— 为什么函数里改了,外面却没变?
java·c++·算法
淡海水10 小时前
02-02-原理篇-分代GC
算法·unity·c#·游戏引擎·.net·gc
知产xiao_xin11 小时前
了解商号权
经验分享·笔记·知识产权
无忧.芙桃11 小时前
C++语言原理与实践(十):vector类的底层实现
开发语言·c++·算法
进击的横打11 小时前
【人工智能】卡片笔记法:从原子化思考到知识网络构建
笔记
乐迪信息11 小时前
AI防爆摄像机,监测港口船舶航行偏航隐患
大数据·人工智能·深度学习·算法·计算机视觉
0+11112 小时前
算法 --模拟
c++·算法·leetcode
青山是哪个青山12 小时前
LeetCode 300:最长递增子序列
算法