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。

总结:

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

相关推荐
im_AMBER几秒前
Leetcode 144 位1的个数 | 只出现一次的数字
学习·算法·leetcode
暮冬-  Gentle°4 分钟前
C++中的工厂模式实战
开发语言·c++·算法
Lisssaa5 分钟前
打卡第二十二天
c++·算法·图论
pu_taoc6 分钟前
理解 lock_guard, unique_lock 与 shared_lock 的设计哲学与应用场景
开发语言·c++·算法
小刘不想改BUG9 分钟前
LeetCode 138.随机链表的复制 Java
java·leetcode·链表·hash table
努力的lpp11 分钟前
2024小迪安全课程第四节复习笔记
笔记·安全
XW010599917 分钟前
6-函数-1 使用函数求特殊a串数列和
数据结构·python·算法
myloveasuka24 分钟前
红黑树、红黑规则、添加节点处理方案
开发语言·算法
沉鱼.4425 分钟前
枚举问题集
java·数据结构·算法
2301_8101609525 分钟前
C++中的访问者模式高级应用
开发语言·c++·算法