59. 螺旋矩阵 II [中等]

85 阅读1分钟

题目

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix

解法一

思路

  • 定义好方向
  • 定义好是否访问过

代码

    public int[][] generateMatrix(int n) {
        int matrix[][] = new int[n][n];
        int x = 0; 
        int y = 0;
        int[] dx = {0, 1, 0, -1};
        int[] dy = {1, 0, -1, 0};
        int d = 0;
        boolean[][] visited = new boolean[n][n];
        for (int i = 1; i <= n * n; i++) {
            matrix[x][y] = i;
            visited[x][y] = true;
            int a = x + dx[d];
            int b = y + dy[d];
            if (a < 0 || a >= n || b < 0 || b >= n || visited[a][b]) {
                d = (d+1) % 4;
            }
            x = x + dx[d];
            y = y + dy[d];
        }
        return matrix;
    }