所以我有一个“1”和“0”值的二维数组,一个值是开或关,这可以生成形状,我想检查垂直线,例如:
[0,0,1,0,1,0,0,0]
[0,0,0,0,1,0,0,0]
[0,1,0,0,1,0,0,0]
[0,0,0,0,1,0,0,0]
[1,0,0,0,1,0,0,0]
[0,0,0,0,1,0,0,0]
在第 5 列中有一条垂直线,因此我们将返回这些结果并删除所有其他结果(将不属于该行的 1 更改为 0...)
[0,0,0,0,1,0,0,0]
[0,0,0,0,1,0,0,0]
[0,0,0,0,1,0,0,0]
[0,0,0,0,1,0,0,0]
[0,0,0,0,1,0,0,0]
[0,0,0,0,1,0,0,0]
我的二维数组要复杂得多,它大约是一个 300x600 的二维数组。为了直观地查看我生成的具有红色背景的 UIView 的值,并将它们粘贴在屏幕上,以查看我的数组大小。这就是返回的图像(蓝色箭头后来被Photoshop处理以指示最长的垂直线(我们想要保留的值)
那么在二维数组中找到最长的垂直线(“1”值)并将所有其他值更改为零的好方法是什么。(因此,如果我再次以可视图形格式渲染数组,则仅显示此数组(其他红点正在淡出,因为它们已从“1”值更改为“0”值。)
我在想可能类似于生成一个for循环的东西,该循环将跟踪每列中的所有“1”值以及一组可能连续相邻且数量最多的任何给定6列“1”值是最长垂直线最有可能位于的区域(6 列宽),但我可以看到一些问题,我也不知道如何获取属于该行的行在我有了专栏之后....嗯
*注意:我正在制作我的“二维数组”,只有一个用于固定列数的变量,然后我有一个包含所有列/行组合的所有值的数组。例如
[0,0,0,0,1,0,0,0,0]
,我可以理解的 3x3 板意味着:
[0,0,0]
[0,1,0]
[0,0,0]
因为我知道每行总是有 3 列。
[row1column1,row1column2,row1column3,row2column1,row2column2,row2column3,row3column1,row3column2,row3column3]