这是我先前在构造图时遇到的挑战的宽松延续。
背景
一位古怪的艺术家雇用您来估计他的雕塑的结构完整性。他通过拿起一堆立方体形状的磁铁,然后将它们一个个地扔进一大堆中来创作自己的艺术品。为了更好地分析他的方法,我们使用以下二维模型。我们从一个空的地板开始,然后将磁铁#
放在任何整数坐标上,例如0
:
|
v
#
===============
0
如果将另一个磁铁放到处0
,它最终会位于前一个磁铁的顶部:
|
v
#
#
===============
0
现在,让我们在放另外一个磁铁0
,然后在放一个1
:
|
#v
##
#
===============
0
如上所示,一个下落的磁铁粘在它通过的第二个磁铁上(第一个只是使它减速)。第二个磁体不必直接位于第一个磁体的下方,并且两侧的磁体仍视为一个磁体:
# #
##|##
# v #
### #
# #
===============
0
艺术家希望您计算最终雕塑中的最大垂直间隙,即,同一列上的两个磁体之间或磁体与其下方的地面之间的最大空白空间。在上图中,该数字将为3(在列上2
)。
输入值
从左到右读取的整数列表,代表艺术家放下磁铁的坐标。您可以假设坐标满足-1024 <= i < 1024
并且列表的长度最大为1024
,如果有帮助的话。
输出量
最终雕塑中的最大垂直间隙。-1
由于我们的雕刻家是达达主义者,因此空雕塑有缝隙,并且必须包括这种情况。
附加规则
您可以提供功能或完整程序。最短的字节数获胜,并且不允许出现标准漏洞。带有说明的代码是首选。
测试用例
[] -> -1
[0,2,1] -> 0
[0,0,0,0,0,1,-1] -> 3
[0,0,0,0,0,1,1,1,2] -> 4
[1,1,2,2,2,2,2,2,1] -> 2
[1,1,2,2,2,2,2,2,1,0,1,0] -> 2
[1,2,1,2,1,2,1,2,2,2,2,1,0] -> 3
[-1,-1,-1,1,1,1,0] -> 1
[-1,-1,-1,-1,2,2,1,1,2,2,2,1,0] -> 2
[-2,-2,-2,-1,-1,-1,0,0,0,1,1,1,2,2,2,3,3,4,4,5,5,5,6] -> 6