0

指定された値を持つディクショナリ内のアイテムの数をカウントしたい (ディクショナリ内の値が単なる数値であると仮定)、オンラインで検索したところ、最初の 2 つのアプローチが見つかりました。

sum(x == chosen_value for x in d.values())

2 番目のアプローチは、コレクションモジュールでカウンターを使用することです。

ただし、両方のアプローチの実行時間はO(N)N辞書内の項目の総数です。でこれを行う方法を知りたいのですO(logN)が、可能ですか?

助けと提案を前もってありがとう!

アップデート:

迅速な返信ありがとうございます。ではできませんO(logN)。代わりに、バイナリ ツリーを使用して (キー、値) ペアを格納する場合があります。

4

3 に答える 3

0

値をカウントにマップする別の辞書を維持できます。これにより、O(1) で求めるカウントが得られます。アイデアは、ディクショナリのように機能する高次のデータ構造を実装することですが、内部で別のディクショナリを維持することにより、値のカウントを返す機能を追加します。

これはおそらくあなたが求めているものではないことを理解しています。ちょうどそれをそこに置くだけで、偶然に。

于 2013-09-09T00:06:08.490 に答える