leetcode 54. 螺旋矩阵-java实现

题目所属分类

螺旋矩阵 这题对做dfs等题 有基础意义

原题链接

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

代码案例:在这里插入图片描述

题解

class Solution {
    public List<Integer> spiralOrder(int[][] matrix) {
            List<Integer> res = new ArrayList<>();
            int n = matrix.length;
            if(n == 0 ) return res ;
            int m = matrix[0].length ;
            //判定是否走过
            boolean[][] st = new boolean[n][m];
            //右下左上
            int dx[] = {0, 1, 0, -1}, dy[] = {1, 0, -1, 0};
            //左上角的位置是x,y = 0,方向b=0   
            for(int i = 0 , x = 0 , y = 0 ,d=0 ; i < n *m ; i ++) {
                res.add(matrix[x][y]);
                st[x][y] = true ;             
                     int a = x + dx[d];
                     int b = y + dy[d];
                     if(a < 0 || a >= n || b < 0 || b >= m || st[a][b]) {//出界了
                            d = (d+1) % 4;
                             a = x + dx[d];
                             b = y + dy[d];
                     }
                     x = a;
                     y = b ;
                                              
            }
            return res ;
    }
}
posted @   依嘫  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示