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

题目

给你一个 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 还会在添加数字)

相关推荐
IT小白杨2 小时前
社媒多账号运营的环境隔离:一张图谱模型,解释清“为什么换IP还是被连坐“
经验分享·笔记·矩阵·指纹浏览器
镜像视界(浙江)科技有限公司1 天前
《视频孪生之上:二维展示终结,三维空间计算重构城市逻辑》——跨摄像连续表达 × 三角测量厘米级定位 × 动态轨迹建模,构建新一代城市空间
大数据·人工智能·算法·矩阵·音视频·空间计算
wzdark1 天前
稀疏矩阵存储结构及其运算复杂度研究4
线性代数·矩阵
零依赖极客1 天前
Day 9·1 KV 也量化——q8 KV 把缓存与 decode 带宽压到一半
c语言·开发语言·arm开发·人工智能·缓存·矩阵
零依赖极客2 天前
Day 6·1 ARMv8.2 dotprod——vdotq_s32 一条指令做 4 个点积
c语言·开发语言·人工智能·矩阵·arm·vllm
wzdark2 天前
基于矩阵的动态规划路径问题性能优化4
线性代数·矩阵·动态规划
Raas1003 天前
MAI Gateway(魔芋企业级AI网关)功能全解:AI网关有哪些功能?一文看懂AI网关能力矩阵
大数据·人工智能·矩阵·gateway·mai gateway·企业级产品
船厂电气自动化ai大模型4 天前
AI大模型与数学 第75课 基、维度、向量空间坐标
数据结构·线性代数·算法·机器学习·推荐算法
hansang_IR4 天前
【题解】P4456 [CQOI2018] 交错序列(矩阵乘法)
c++·线性代数·算法
BSD_HY5 天前
薄膜开关矩阵扫描在低功耗MCU上的GPIO扩展实现
单片机·嵌入式硬件·矩阵·人机交互·薄膜开关·源头工厂