七七老师の白日梦
首页项目归档照片墙音乐灵境说说杂谈友链关于
封面

螺旋矩阵

写作时间:2026-07-12 21:13:29

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

是什么?

矩阵顺时针顺序

怎么做?

从左到右,从上到下,从右到左,从下到上

思考

思路很简单,难在怎么实现?

代码

import java.util.ArrayList;
import java.util.List;
class Solution {
    public List spiralOrder(int[][] matrix) {
// 判断特殊情况,去掉,这里return不能接0
        if (matrix == null || matrix.length == 0) return new ArrayList<>();
// 定义上下左右
        int top = 0, bottom = matrix.length - 1;
        int left = 0, right = matrix[0].length - 1;
// 创建列表接收数据
        List res = new ArrayList<>();
// 判断边界
        while (top <= bottom && left <= right) {
// 从左到右
            for (int i = left;i <= right;i++) {
                res.add(matrix[top][i]);
// 上界下移
                top++;
            }
// 从上到下
            for (int i = top;i <= bottom;i++) {
                res.add(matrix[i][right]);
                right--;
            }
// 判断边界,避免重复
            if (right >= left) {
// 从右到左
                for (int i = right; i >= left; i--) {
                    res.add(matrix[bottom][i]);
                    bottom--;
                }
            }
            if (bottom >= top) {
// 从小到上
                for (int i = bottom; i >= top; i--) {
                    res.add(matrix[i][left]);
                    right++;
                }
            }
        }
        return res;
    }
}

‍

avatar

七七老师

分享代码日常

RECOMMENDED

七七旧事:复盘并改变写博客的方式

2026-07-02 22:54:38

字母异位词

2026-07-04 22:22:08

寻找两个正序数组的中位数:合并与二分

2026-07-08 15:56:26

Table of Contents