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。

总结:

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

相关推荐
成都蜀味缘餐饮技术培训学校2 分钟前
手撕烤兔技术培训实战指南,秘制腌料配方比例与调制手法
大数据·经验分享·笔记·其他·微信公众平台
希和20271 小时前
免费AI视频生成工具汇总(国内优先,适合做漫剧、短视频,Obsidian笔记版)
人工智能·笔记·音视频
文丑颜不良啊1 小时前
LeetCode2141~2160题目解析
java·leetcode
LabVIEW开发2 小时前
LabVIEW 连接板:28 个端子怎么排,优先级怎么定
java·算法·labview
蒸蒸yyyyzwd2 小时前
秋招学习笔记 day109
笔记·八股
严肃小白兔3 小时前
MATLAB 数值计算中的精度与误差问题:浮点运算、误差传播与数值稳定性
人工智能·算法·matlab
青少儿编程课堂4 小时前
蓝桥杯青少组图形化省考报名倒计时·全国青少年信息素养大赛·电子学会图形化考级:校园黑白棋人机对战解析
c++·python·算法·bfs·信息学竞赛
只愿云淡风清5 小时前
正则表达式学习笔记 02:基础语法
笔记·学习·正则表达式
jktantan5 小时前
注解式脱敏:用 Jackson 的 ContextualSerializer 做字段级策略(一)
spring boot·后端·算法·spring cloud·系统架构
希和202715 小时前
考研英语阅读词汇笔记|城市野径、抄近道步道(非正式小路)
笔记·考研