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。

总结:

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

相关推荐
萌新小白YXY5 小时前
SAE J1587/SAE J1708 协议笔记
笔记·单片机·嵌入式硬件
逆境不可逃6 小时前
【LeetCode 912】排序数组——随机化快速排序详解
数据结构·算法·排序算法
Coder-magician6 小时前
《代码随想录》刷题打卡day31:动态规划-背包问题part02
算法·动态规划
薛定e的猫咪6 小时前
从因果视角解决多智能体协作:细读 SCIC 算法
算法
IT古董6 小时前
【MES学习笔记系列】MES 推荐书籍与资源
笔记·学习
Forever Nore6 小时前
LeetCode 14 最长公共前缀 - 纵向扫描
linux·服务器·leetcode
c238566 小时前
《算法武林谱:四大排序神功与二分寻宝术全解》
数据结构·算法·排序算法
圣保罗的大教堂6 小时前
leetcode 3090. 每个字符最多出现两次的最长子字符串 简单
leetcode
一米阳光86616 小时前
软考(中级)软件设计师核心笔记(9)算法——时间复杂度与空间复杂度、查找算法、排序算法
笔记·算法·职场发展·软考·软件设计师·中级职称
米饭不加菜6 小时前
常用基本求导公式与法则(超详细推导版——上)
经验分享·笔记