10
データ構造を提供するライブラリがあり、アイテムの順序を保持し、重複は含まれていませんか?そのようなデータ構造には適切な名前がありますか?重複のないリストまたは順序付きセット
私はそれがnub
のリストのように振舞うと予想します。もちろん、私はそれが非効率的に実装されることは期待していません。
があなたの措置としてSet
モノイドでfingertreeを使用します。
データ構造を提供するライブラリがあり、アイテムの順序を保持し、重複は含まれていませんか?そのようなデータ構造には適切な名前がありますか?重複のないリストまたは順序付きセット
私はそれがnub
のリストのように振舞うと予想します。もちろん、私はそれが非効率的に実装されることは期待していません。
があなたの措置としてSet
モノイドでfingertreeを使用します。
は、ここで一つの解決策です。次に、インサートで、完全な指先のmeasure
を使用してメンバーシップを最初にチェックします。これにより、あなたはO(log(n))
とsnoc、O(1)
の削除を行います。
通常Set
とのペア通常のリストと基本的に同じ効果を得る:
はここで別のソリューションです。より良い一定の要因が得られますが、O(log(n))
が削除されます。
ここに質問があります:複製物を挿入したらどうしますか?既存のポジションを維持すべきか?新しいポジション?優先度キューは、必要に応じて、近くにある可能性があります。
Javaの[LinkedHashSet](http://docs.oracle.com/javase/6/docs/api/java/util/LinkedHashSet.html)を思い出させます。だから私は、同じようなアプローチが不変の機能的なデータ構造のために使われると思う。 –
あなたの型が 'Ord'に属していれば' Data.Set'を書いて 'O(n * log m)'を取る 'ordNub'を使うことができます。' n'は項目の数です。 'm 'ユニークなアイテムの数。 'Ord'ではなく' Hashable'であれば 'Data.HashSet'でも同じことができます。それは十分に非効率的であろうか? –
こんにちは2013、あなたは解決策に到着しましたか? – akst