19、矩阵-螺旋矩阵

思路:

这道题主要是对空间上有所思考,每次转一圈上右下左各减少一层。不妨设top,right,down,left,每次旋转一圈 top++,right--,down--,left++

代码如下:

复制代码
class Solution {
   public List<Integer> spiralOrder(int[][] matrix) {
        if (matrix==null||matrix.length==0||matrix[0].length==0){
            return new ArrayList<>();
        }
        int m=matrix.length;
        int n=matrix[0].length;
        List<Integer> list=new ArrayList<>();
        int total=m*n;
        int left=0;int right=n-1;int top=0;int down=m-1;

        while (list.size()<total) {
            //从左向右运动
            for (int col = left; col <= right && list.size() < total; col++) {
                list.add(matrix[top][col]);
            }
            //上边界下移
            top++;
            //从上往下运动
            for (int row = top; row <= down && list.size() < total; row++) {
                list.add(matrix[row][right]);
            }
            //有边界左移
            right--;
            //从右往左运动
            for (int col = right; col >= left && list.size() < total; col--) {
                list.add(matrix[down][col]);
            }
            //下边界上移
            down--;
            //从下往上
            for (int row = down; row >= top && list.size() < total; row--) {
                list.add(matrix[row][left]);
            }
            left++;
        }
        return list;
    }
}
相关推荐
‎ദ്ദിᵔ.˛.ᵔ₎4 分钟前
Java 匿名内部类与 Lambda 表达式
java
橘白3165 分钟前
rl笔记(一):策略梯度更新算法推导
人工智能·算法·机器人·强化学习
hhhhhaaa6 分钟前
Java 并发编程核心原理与生产级最佳实践
java·后端
hhhhhaaa6 分钟前
多节点矩阵式任务系统:统一配置中心与动态规则引擎架构设计
后端·算法·架构
cqwuliu15 分钟前
Freemarker模板工具
java·开发语言
asdfg125896316 分钟前
`(line1, line2) -> line1 + line2` 此Lambda 表达式的理解
java·开发语言
吃着火锅x唱着歌16 分钟前
LeetCode 739.每日温度
算法·leetcode·职场和发展
如竟没有火炬18 分钟前
去除重复字母——贪心+单调栈
开发语言·数据结构·python·算法·leetcode·深度优先
AI人工智能+电脑小能手27 分钟前
【大白话说Java面试题 第49题】【JVM篇】第9题:什么是双亲委派机制?介绍一下运作过程。?
java·开发语言·jvm
薛定e的猫咪28 分钟前
【ICML 2025】MODULI:基于扩散模型解锁离线多目标强化学习的偏好泛化
人工智能·学习·算法·机器学习