LeetCode——59. 螺旋矩阵 II(Spiral Matrix II)[中等]——分析及代码(Java)

LeetCode——59. 螺旋矩阵 II[Spiral Matrix II][中等]——分析及代码[Java]

一、题目

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

示例 1:

输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]

示例 2:

输入:n = 1
输出:[[1]]

提示:

  • 1 <= n <= 20

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/spiral-matrix-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二、分析及代码

1. 逐层遍历

(1)思路

本题与 54.螺旋矩阵 类似,可按照题目要求,逐层按顺时针方向将各元素依次填入矩阵中。

(2)代码

class Solution {
    
    
    public int[][] generateMatrix(int n) {
    
    
        int[][] matrix = new int[n][n];//输出矩阵
        int left = 0, right = n - 1, top = 1, bottom = n - 1;//左,右,上,下边界
        int i = 0, j = 0, layer = 0, num = 1, total = n * n;//当前坐标,层数,数字,总数
        matrix[i][j] = num;
        while (num < total) {
    
    
            while (j < right - layer)//向右
                matrix[i][++j] = ++num;
            while (i < bottom - layer)//向下
                matrix[++i][j] = ++num;
            while (num < total && j > left + layer)//向左
                matrix[i][--j] = ++num;
            while (num < total && i > top + layer)//向上
                matrix[--i][j] = ++num;
            layer++;//层数+1
        }
        return matrix;
    }   
}

(3)结果

执行用时 :0 ms,在所有 Java 提交中击败了 100.00% 的用户;
内存消耗 :36.4 MB,在所有 Java 提交中击败了 77.90% 的用户。

三、其他

暂无。

猜你喜欢

转载自blog.csdn.net/zml66666/article/details/114889780