题解 | #螺旋矩阵#

螺旋矩阵

http://www.nowcoder.com/practice/7edf70f2d29c4b599693dc3aaeea1d31

import java.util.*;

public class Solution {
    public ArrayList<Integer> spiralOrder(int[][] matrix) {
        // 右下左上四个方向 
        int[] dx = {0, 1, 0, -1};
        int[] dy = {1, 0, -1, 0};
        ArrayList<Integer> list = new ArrayList<>();
        if (matrix == null || matrix.length == 0) return new ArrayList<>();
        int n = matrix.length, m = matrix[0].length;
        int x = 0, y = 0, d = 0;
        boolean[][] vis = new boolean[15][15];
        // 使用数的个数作为循环的依据
        for (int i = 1; i <= n * m; i++) {
            list.add(matrix[x][y]);
            vis[x][y] = true;
            int tx = x + dx[d], ty = y + dy[d];
            // 是否越界或是否已经读取过
            if (tx < 0 || tx >= n || ty < 0 || ty >= m || vis[tx][ty]) {
                d = (d + 1) % 4;
                tx = x + dx[d];
                ty = y + dy[d];
            }
            x = tx;
            y = ty;
        }
        return list;
    }
}
全部评论

相关推荐

10-31 21:01
武汉大学 Java
lulululula...:仅仅按我个人的经历来看,大厂其实很少特别关注微服务,一般对微服务架构,限流熔断降级的概念了解就行,简历不写也不容易被问到。现在这个势头不如站点agent应用,比如做做mcp,rag,r对话agent,记忆管理之类的,说不定可以蹭上一波热度,进公司虽然可能还是干agent的杂活,但是可以学一学组内的业务和技术了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务