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

题目

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

相关推荐
hai31524754320 小时前
文本矩阵化拆解与视频矩阵化构建
线性代数·矩阵·音视频
Godspeed Zhao1 天前
现代智能雷达技术14——算法(0)
线性代数·算法·雷达
蝶依斓(湖南)全案整装2 天前
整装行业长尾需求内容矩阵搭建方法:从五个维度拆解用户需求
大数据·人工智能·矩阵
梦帮科技2 天前
推测解码(Speculative Decoding)与 Draft-Target 双核协同:接受率判据、树状验证与两倍吞吐无损加速
网络·人工智能·深度学习·神经网络·线性代数·矩阵·架构
xqqxqxxq3 天前
LeetCode Hot100 矩阵专题题解笔记
笔记·leetcode·矩阵
Dylan的码园3 天前
求平均成绩 矩阵数据处理 【循环处理 二维数组】
c++·线性代数·矩阵
苏打豆3 天前
CRISP源码阅读——基于ROS2力矩反馈控制器与速度加速度零空间
c++·线性代数·算法·矩阵·机器人
梦帮科技4 天前
LoRA / QLoRA 低秩矩阵流形更新:SVD 分解、秩与缩放因子 α 的物理意义与梯度稳定性保障
网络·深度学习·神经网络·线性代数·矩阵·架构·数据挖掘
苏打豆4 天前
Pinocchio源码阅读——刚体运动物理量空间变换及求导
c++·线性代数·算法·矩阵·机器人
梦帮科技5 天前
量子张量网络破局大模型:从矩阵乘积态 (MPS) 到张量列 (TT-SVD) 低秩收缩全推导
网络·数据结构·数据库·线性代数·矩阵·架构·模拟退火算法