题目

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

        示例:

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

C++面试宝典第26题:螺旋矩阵-LMLPHP

解析

        螺旋矩阵是指按照顺时针(或逆时针)螺旋顺序排列元素的二维矩阵。比如:给定一个如下的3x3矩阵,按顺时针螺旋顺序输出的结果应为:1, 2, 3, 6, 9, 8, 7, 4, 5。

[
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
]

        解决螺旋矩阵问题的核心在于:设计一种遍历矩阵的方法,使得遍历路径形成螺旋形态。

        为了方便遍历矩阵并确定移动方向,需要定义四个变量来记录当前边界。初始状态下,它们都指向各自边界的起始位置。

        left:表示当前层左边界索引,初始值为0。

        right:表示当前层右边界索引,初始值为n - 1。

        top:表示当前层上边界索引,初始值为0。

        bottom:表示当前层下边界索引,初始值为n - 1。

02-02 15:08