从外向内旋转,通过计数器逐渐填充

时间:2015-11-20 01:11:46

标签: algorithm spiral

在这个问题:Intel SandyBridge中,有一种方法可以“在矩阵中螺旋式地提取值”。但是,如果要求是 n×m矩阵,则填充它以使其看起来像:

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

(所以上面是矩阵,给定一个4×4矩阵,其中包含所有0 s,现在填充这个矩阵,使它看起来像上面的矩阵。那么有没有像Looping in a spiral outside-in中的递归回答?(虽然我的关注点是:解决方案很优雅,但不是O(n*m)

1 个答案:

答案 0 :(得分:0)

不是特别优雅,但是很容易跟踪你转向的下四个坐标(即,开始将元素放在不同的方向上)并在四个方向上循环。每次转弯时,用两个轴上矩阵中心的坐标1替换它(这是你角落下一个转弯的位置)并切换到下一个方向。