【发布时间】:2012-12-26 10:37:45
【问题描述】:
可能的重复:
Looping in a spiral
Writing a string in a spiral
Print two-dimensional array in spiral order
2d Array in Spiral Order
我们有一个矩阵形式的数据
0 0 0 0 0
0 1 2 3 0
0 4 5 6 0
0 7 8 9 0
0 0 0 0 0
以这种方式存储在一维数组中
[0 0 0 0 0 0 1 2 3 0 0 4 5 6 0 0 7 8 9 0 0 0 0 0 0]
这是一个零填充的 3x3 数组转换为 5x5。我们知道开始索引和结束索引。
如我们所见,我们可以执行 25 次操作并打印所有值,但如果我们按照螺旋顺序进行,理想情况下应该只执行 9 次操作。
有人知道怎么做吗?
我们知道行数和列数。这里应该是 rows=5 cols=5。
因此起始索引为 rows+1,结束索引为 rows*cols-6
我将其可视化为螺旋顺序遍历。
【问题讨论】:
-
你的意思是按螺旋顺序排列?你有一个一维数组,不是吗?
-
什么是开始索引和结束索引?引导我们完成当前示例。
-
它是一个一维数组,将解可视化为螺旋顺序,起始索引为 6,结束索引为 18。
-
数组总是奇数吗?如果是这样,在特定情况下获得 1,4 和 7 的索引是非常简单的数学运算。
-
不是奇数,是mXn