整数のリストのリストが与えられた場合、タスクは整数のリストの別のリストを出力する関数を書くことです。望ましい出力の性質を言葉で伝えるのは難しいため、いくつかの例を書いています。
# list with one element will be returned
>>> func([[1, 2, 3, 4]])
[[1, 2, 3, 4]]
>>> func([[1], [1, 2]])
[[1], [2]]
>>> func([[1, 2], [1]])
[[1], [2]]
>>> func([[1], [1, 2, 3]])
[[1], [2, 3]]
>>> func([[1], [1, 2, 3], [1, 4]])
[[1], [2, 3], [4]]
>>> func([[1, 2], [2, 3]])
[[1], [2], [3]]
>>> func([[1], [2], [1, 2, 3]])
[[1], [2], [3]]
>>> func([[1, 2], [1, 2, 3]])
[[1, 2], [3]]
>>> func([[1], [1, 2], [1, 2, 3]])
[[1], [2], [3]]
(更新) 次の前提条件を使用できます。
各内部リストには既にソートされた整数が含まれており、重複するエントリはありません。
外側のリストには重複するエントリはありません。
(更新)あなたが尋ねたように、ここに私が行き詰まっていると思うものがあります:
これは、ノードとしての数値とエッジの開始点としての内部リスト (外部リストはすべてのエッジの開始点のセット) を持つ、有向グラフの一部の最適化の問題です。ここで、「いくつかのテスト ケースで示されているように、1 つのエッジに複数の開始点があるのはどうしてですか?」と疑問に思うかもしれません。
これが私がやろうとしていることです:func ([1, 2])
ノード 1 とノード 2 は単一のノードにマージできます。出力[1, 2]
は、これら 2 つをマージできることを示しています。
を見てくださいfunc ([[1], [1, 2]])
。2 番目の内側のリストはノード 1 と 2 を一緒にマージしようとしますが、1 番目の内側のリストはノード 1 を何にもマージできないことを示しています。したがって、出力は[[1], [2]]
であり、ノード 1 とノード 2 を分離したままにすることを示します。
の場合func ([[1], [2, 3], [1, 2, 3]])
、ノード 1 は分離されますが、ノード 2 と 3 はマージできます。したがって、出力は次のようになります[[1], [2, 3]]
の場合、func ([[1, 2], [2, 3]])
ノード 1 と 3 はマージできるため、ノード 1 と 2 も 2 と 3 もマージできないため、期待される結果は[[1], [2], [3]]
です。
頂点の端点で構成される整数のリストもあり、各整数は各内部リストに対応します。内部リストの要素が 1 つにマージされると、エッジは 1 つだけ残ります。それらが分離されると、シングルトンリストがあり、それぞれの要素が開始点として取られます。それに応じてエンドポイントのリストが更新されます。
私のニーズを理解するのに役立つと思います。