これは、グラフの構築に関する私の以前の課題の緩やかな継続です。
バックグラウンド
風変わりなアーティストが彼の彫刻の構造的完全性を推定するためにあなたを雇いました。彼は立方体の磁石の束を取り、それらを一つ一つ巨大な山に落とすことによって彼の芸術作品を作成します。彼の方法をよりよく分析するために、次の2次元モデルを使用します。空の床から始め#
、任意の整数座標に磁石をドロップします0
。
|
v
#
===============
0
別の磁石をで落とすと0
、前の磁石の上に配置されます:
|
v
#
#
===============
0
次に、にもう1つ磁石をドロップし0
、次に1つにドロップし1
ます。
|
#v
##
#
===============
0
上記のように、落下する磁石は、通過する2番目の磁石に付着します(最初の磁石は単に減速させます)。2番目の磁石は最初の磁石のすぐ下にある必要はなく、両側の磁石は1つの磁石としてカウントされます。
# #
##|##
# v #
### #
# #
===============
0
アーティストは、最終的な彫刻の最大垂直ギャップ、つまり、同じ列の2つの磁石、または磁石とその下の地面の間の空きスペースの最大数を計算することを望んでいます。上の図では、この数は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