12月27日每日一题

给你一个正整数 n ,生成一个包含 1 到 n的平方 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形二维整型数组 matrix ,并将其打印出来.

例:

输入n  = 3 

那么我们应该生成的二维数组是:

12月27日每日一题_第1张图片

提示:

1<= n <= 20;

 public int[][] generateMatrix(int n) {
        int a = 1;
        int arr[][] = new int[n][n];
        if (n == 1) {
            arr[0][0] = 1;
            return arr;
        }
        for (int floors = 0; floors < n / 2; floors++) {
            for (int i = floors; i < n - floors - 1; i++, a++) {
                arr[floors][i] = a;
            }
            for (int i = floors; i < n - floors - 1; i++, a++) {
                arr[i][n - floors - 1] = a;
            }
            for (int i = n - floors - 1; i > floors; i--, a++) {
                arr[n - floors - 1][i] = a;
            }
            for (int i = n - floors - 1; i > floors; i--, a++) {
                arr[i][floors] = a;
            }
        }
        if ((n & 1) == 1) {
            arr[n / 2 + 1][n / 2 + 1] = n * n;
        }


        return arr;
    }

12月27日每日一题_第2张图片

你可能感兴趣的:(蓝桥杯,职场和发展)