【LeetCode】59. 螺旋矩阵 II

题目:59. 螺旋矩阵 II

解题思路

  1. 手动模拟螺旋矩阵,分别实现四个方向的代码,将数组依次填入数组中即可
  2. 需要注意的是,如果n为奇数,说明最后只剩下中间的一个位置,将最后一个数直接填入即可;若n为偶数,则正好能够遍历n/2遍
class Solution {
    public int[][] generateMatrix(int n) {
        int[][] res = new int[n][n];
        int count = 1;
        int start = 0;
        int loop = 0;
        int i, j;

        while(loop++ < n/2) {
            for(j=start; j<n-loop; j++) {
                res[start][j] = count++;
            }

            for(i=start; i<n-loop; i++) {
                res[i][j] = count++;
            }

            for(; j>=loop; j--) {
                res[i][j] = count++;
            }

            for(; i>=loop; i--) {
                res[i][j] = count++;
            }
            start++;
        }

        if(n % 2 == 1) {
            res[start][start] = count;
        }

        return res;
    }
}

参考资料:59. 螺旋矩阵 II

posted @ 2024-05-21 21:51  是你亦然  阅读(11)  评论(0编辑  收藏  举报