LeetCode 54. Spiral Matrix

LeetCode 54. Spiral Matrix (螺旋矩阵)

题目

链接

https://leetcode-cn.com/problems/spiral-matrix/

问题描述

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

示例

输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]

提示

m == matrix.length
n == matrix[i].length
1 <= m, n <= 10
-100 <= matrix[i][j] <= 100

思路

就一圈一圈的,只需要设置好边界值即可,我用tag来避免产生死循环。

复杂度分析

时间复杂度 O(n*m)
空间复杂度 O(n*m)

代码

Java

   public List<Integer> spiralOrder(int[][] matrix) {
        int n = matrix.length;
        int m = matrix[0].length;
        List<Integer> ans = new ArrayList<>();
        int up = 0;
        int down = n - 1;
        int left = 0;
        int right = m - 1;
        int x = 0;
        int y = -1;
        int turn = 0;
        int tag = 0;
        for (int i = 1; i <= n * m && tag != 4; i++) {
            if (turn == 0) {
                if (y < right) {
                    y++;
                    ans.add(matrix[x][y]);
                    tag = 0;
                } else {
                    up++;
                    i--;
                    turn = 1;
                    tag++;
                }
            } else if (turn == 1) {
                if (x < down) {
                    x++;
                    ans.add(matrix[x][y]);
                    tag = 0;
                } else {
                    right--;
                    i--;
                    turn = 2;
                    tag++;
                }
            } else if (turn == 2) {
                if (y > left) {
                    y--;
                    ans.add(matrix[x][y]);
                    tag = 0;
                } else {
                    down--;
                    i--;
                    turn = 3;
                    tag++;
                }
            } else {
                if (x > up) {
                    x--;
                    ans.add(matrix[x][y]);
                    tag = 0;
                } else {
                    left++;
                    i--;
                    turn = 0;
                    tag++;
                }
            }
        }
        return ans;
    }
posted @   cheng102e  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示