Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

README.rst

螺旋矩阵

此问题有多个子问题。

按螺旋形式打印矩阵

给定一个二维矩阵,按照螺旋的顺序,打印结果。例如给定二维矩阵:

1   2   3   4
5   6   7   8
9   10  11  12
13  14  15  16

打印结果为:

1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10

示意图:

images/spiral-matrix.png

解法

设打印结果中,数在矩阵中的坐标为(x, y)。

观察示意图可以发现,初始坐标为(0, 0),然后x增加到最大值3,变为(3, 0),之后y增加到最大值3,变为(3, 3),之后x减小到最小值0,即(0, 3),之后y减小到最小值1,即(0, 1)。

x和y的规律为:

  1. y不变,x增加到最大值
  2. x不变,y增加到最大值
  3. y不变,x减小到最小值
  4. x不变,y减小到最小值
  5. 重复1-4步

另外,x和y的最大值、最小值也在不断变化中。x、y的初始范围是[0, 3],即两者的初始最大值均为3,最小值均为0。每次x、y达到最大值后,其最大值就减小1,每次x、y达到最小值后,其最小值就增大1。