私は、仕事で思い浮かぶ次の問題(最適な解決策)を見つけようとしていました。結局、十分な解決策が得られるように解決しましたが、 1。配列の範囲を見つける
... nを文字列の配列とします。
レッツS ... Kは、配列のそれらのすべてはまたのメンバー、文字列の順序なしリストでありますね。
a
にあるs
のインデックス範囲の最小セットを見つけることです。
たとえば、a = ["x"、 "y"、 "a"、 "f"、 "c"]およびs = {"c"、 "y"、 "f"}の場合、配列がゼロからインデックスされていると仮定して、(1; 1)、(3; 4)となります。
a
は、通常、かなり小さく(数十万要素)、s
は比較的小さく、通常は長さが<ログ(長さ(a))です。
問題は次のとおりです。この問題の時間効率的なアルゴリズムを見つけることができますか?
ちょっと速いが重要な更新:この操作は異なるs
の値で実行する必要がありますが、同じa
がたくさんあります。したがって、a
に基づいた事前計算は許可されていますが、それは唯一の方法です。
あなたが(S0:A4)を意味し、(S1:A1)、(S2:F4を)? – Muggen
いいえ、私は "c"と "f"が "a"で連続していて、それらがインデックス3〜4の間の範囲にまたがっていることを意味します、 "y"は単なるスタンドです。 – biziclop
私は今参照してください。ありがとう。 – Muggen