[Java][Leetcode middle] 54. 螺旋矩阵

官解

采用四个变量分别记录上下左右

然后根据循环方向分别移动一格,然后判断是否需要退出循环。

java 复制代码
class Solution {
    public List<Integer> spiralOrder(int[][] matrix) {
        List<Integer> res = new ArrayList<>();
        if(matrix == null || matrix.length == 0 || matrix[0].length == 0) return res;

        int top = 0;
        int bottom = matrix.length - 1;
        int left = 0;
        int right = matrix[0].length -1;

        while(true){
            // 左到右
            for(int i = left; i<=right ;i++) res.add(matrix[top][i]);
            // 向下一格并判断是否超出边界
            if(++top > bottom) break;

            // 上到下
            for(int i = top; i<=bottom;i++)  res.add(matrix[i][right]);
            // 左
            if(--right < left) break;

            // 右到左
            for(int i = right; i>=left;i--)  res.add(matrix[bottom][i]);
            // 上
            if(--bottom < top) break;

            // 下到上
            for(int i = bottom; i>=top;i--)  res.add(matrix[i][left]);
            // 右
            if(++left > right) break;
        }

        return res;
    }
}
相关推荐
云和数据.ChenGuang4 小时前
Python 重写(Override)深度解析:从 MRO 到 super() 的完整机制
java·开发语言·人工智能·python·langchain·1024程序员节
摇滚侠5 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 12
java·数据库·笔记
silvamux_7 小时前
10款模型写种草笔记:可发布性、返工来源与成本数据缺口复盘
java·数据库·笔记
步行cgn8 小时前
StringHttpMessageConverter 详解:Spring MVC 中字符串读写的默认转换器
java·spring·mvc
摇滚侠8 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 11
java·笔记·python
小蒜学长8 小时前
基于Spring Boot+Vue3的在线医疗咨询系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·在线问诊·在线医疗咨询系统
Deng桑8 小时前
SpringAI写第一个Agent-把工单循环跑起来
java·agent·工具调用·spring ai
lvwangshu9 小时前
P15569 [COCI 2025/2026 #5] 结构 / Struktura 题解
矩阵·题解·dp·推导题·矩阵加速
圣保罗的大教堂10 小时前
leetcode 3619. 总价值可以被 K 整除的岛屿数目 中等
leetcode
步行cgn10 小时前
@ResponseBody 详解:Spring MVC 中把返回值直接写入响应体
java·spring·mvc