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。

总结:

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

相关推荐
QDYOKR16818 小时前
一文了解什么是OKR
大数据·人工智能·笔记·钉钉·企业微信
ZhiqianXia18 小时前
PyTorch 学习笔记(12):ATen C++ 算子引擎的完整架构之旅
pytorch·笔记·学习
卖男孩的小火柴.18 小时前
java内置方法总结及基础算法
java·算法
旖-旎18 小时前
链表(两两交换链表中的节点)(2)
数据结构·c++·学习·算法·链表·力控
XWalnut18 小时前
LeetCode刷题 day8
算法·leetcode·职场和发展
landuochong20018 小时前
用 Claude Code 直接写 Obsidian 笔记-增强版
人工智能·笔记·skill·claudecode
泰晶科技18 小时前
【晶振电子元件基本术语】
笔记
-SGlow-19 小时前
Linux相关概念和易错知识点(51)(mmap文件映射、共享内存原理、malloc的原理)
linux·c语言·算法·内核
IT摆渡者19 小时前
JUMPSERVER堡垒机部署
linux·运维·网络·经验分享·笔记
学习永无止境@19 小时前
Sobel边缘检测的MATLAB实现
图像处理·opencv·算法·计算机视觉·fpga开发