我一直在努力尋找出現在工作中的以下(有趣?)問題的最佳解決方案:最終,我解決了一個足夠好的解決方案,但我想知道是否有更好的解決方案一。在陣列中查找範圍
讓a ... a n是一個字符串數組。
令S 內容S ķ是一個無序的字符串列表,所有的人也數組的成員。
任務是找到a
中s
覆蓋的最小索引範圍eleements集。例如,如果a = [「x」,「y」,「a」,「f」,「c」]和s = {「c」,「y」,「f」},那麼答案(1; 1),(3; 4),假設數組從零開始索引。
a
通常相當大(數十萬個元素),而s
相對較小,通常爲長度(s)<log(長度(a))。
所以問題是:你能爲這個問題找到一個省時的算法嗎? (空間效率不是合理限制內的問題。)
只是一個快速但重要的更新:我需要使用不同的s
值執行此操作,但同一個a
很多。所以基於a
的預計算是允許的,實際上它是唯一的方法。
你的意思是(S0:A4),(S1:A1),(S2:F4)? – Muggen 2011-03-02 21:24:08
不,我的意思是「c」和「f」在「a」中是連續的,並且它們跨越了指數3-4之間的範圍,「y」是獨立的,所以它只是1-1的範圍。 – biziclop 2011-03-02 21:27:56
好吧,我現在看到。謝謝。 – Muggen 2011-03-02 21:29:42