算法题:59螺旋矩阵2


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

示例 1:

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

public class Solution {


    public int[][] generateMatrix(int n) {
        int[][] a = new int[n][];
        for (int i = 0; i < n; i++) {
            a[i] = new int[n];
        }

        int k = 1;
        int i = 0, j = 0;
        int flag = 1;
        while (k <= n * n) {
            a[i][j] = k++;
            if (flag == 1) {
                j++;
                if (j == n || (j < n && a[i][j] > 0)) {
                    j--;
                    i++;
                    flag = 2;
                    continue;
                }
            }
            if (flag == 2) {
                i++;
                if (i == n || (i < n && a[i][j] > 0)) {
                    i--;
                    j--;
                    flag = 3;
                    continue;
                }
            }
            if (flag == 3) {
                j--;
                if (j == -1 || (j >= 0 && a[i][j] > 0)) {
                    j++;
                    i--;
                    flag = 4;
                    continue;
                }
            }
            if (flag == 4) {
                i--;
                if (i == -1 || (i >= 0 && a[i][j] > 0)) {
                    i++;
                    j++;
                    flag = 1;
                    continue;
                }
            }

        }
        return a;

    }
}

轻轻松松,挺简单的