【矩阵】【中等】螺旋矩阵

题目

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

示例 1:

输入:matrix = \[1,2,3,4,5,6,7,8,9]

输出:1,2,3,6,9,8,7,4,5
示例 2:

输入:matrix = \[1,2,3,4,5,6,7,8,9,10,11,12]

输出:1,2,3,4,8,12,11,10,9,5,6,7
提示:

m == matrix.length

n == matrixi.length

1 <= m, n <= 10

-100 <= matrixij <= 100

四个边界值

定义四个边界,如下图所示,走完一圈之后,四个边界同时向里面缩。

  • 当up<down,或者left>right的时候说明螺旋结束。
java 复制代码
                 up = 0
                   ↓
          left →  1   2   3   4  ← right
                  5   6   7   8
                  9  10  11  12
                   ↑
                down = 2
java 复制代码
public static List<Integer> spiralOrder(int[][] matrix) {
    List<Integer> list = new ArrayList<>();
    int up = 0;
    int down = matrix.length-1;
    int left = 0;
    int right = matrix[0].length-1;
    while(true) {
        for(int i = left; i<=right; i++) {
            list.add(matrix[up][i]);
        }
        up++;
        if(up>down) {break;}
        for(int i = up; i<=down; i++) {
            list.add(matrix[i][right]);
        }
        right--;
        if(right<left) {break;}
        for(int i = right; i>=left; i--) {
            list.add(matrix[down][i]);
        }
        down--;
        if(up>down) {break;}
        for(int i = down; i>=up; i--) {
            list.add(matrix[i][left]);
        }
        left++;
        if(right<left) {break;}
    }
    return list;
}

注意每一次边界值变动都要判别,否则可能导致下一步添加新的数字(up>down已经可以跳出,但是 left 和 right 还会在添加数字)

相关推荐
ACP广源盛1392462567320 小时前
Qwen3.8‑2.4T 开源落地@ACP#国产 Serdes 长距离视频传输芯片 GSV5800 在私有化 AI 服务中的价值与应用场景
大数据·数据库·人工智能·嵌入式硬件·矩阵·开源·音视频
CIO_Alliance1 天前
AI深度系列(2)| CNN卷积池化感受野原理:从局部感知到全局视野
人工智能·深度学习·线性代数·算法·计算机视觉·企业ai转型·企业cio联盟
民乐团扒谱机1 天前
【微科普】压缩感知(CS):违反了奈奎斯特采样定理?不先采集也能还原信号?大白话讲透稀疏采样、L1重建与OMP,一文吃透附代码
python·神经网络·线性代数·算法·数学建模·压缩感知·奈奎斯特
Jasmine_llq2 天前
《P11248 [GESP202409 七级] 矩阵移动》
线性代数·三维 dp·转移来源上i‑1j左边ij‑1·当前字符为两个分支改或者不改·初值全部赋值负无穷,代表不可达·起点特殊初始化·答案取dpnm0]里最大值
ZJU_统一阿萨姆2 天前
【算子开发】矩阵乘法(GEMM)入门与共享内存优化
人工智能·线性代数·矩阵·系统架构
招财小梗3 天前
AI矩阵获客,品牌连锁落地方案揭秘
大数据·人工智能·矩阵
云登指纹浏览器3 天前
做TikTok矩阵号用什么指纹浏览器?2026年实战横评
线性代数·矩阵
民乐团扒谱机5 天前
【微实验】线性代数之——奇异值分解 SVD:穿透数据迷雾的“X光机”,附 MATLAB 全流程仿真
线性代数·算法·matlab
随风而飘1865 天前
罗德与施瓦茨 R&S ZN-Z84多端口可配置射频开关矩阵
线性代数·矩阵