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% 的用户。
三、其他
暂无。