1

以下は、私が数回行ったシナリオです..

段落内の単語の頻度を数えます。

Map を作成し、カウントを保存します。SO私のマップが含まれています

  <Today, 10>
  <the, 123>
  <hello,1>
  <dont, 20>

ここで、カウント 100 または 30 の単語を識別するもう 1 つのシナリオが始まります。

リストのマップまたはマップを作成します

<10, [today,...]>
   <123,[the,...]>

または <10, 2> <123,1> 基本的に、すべての作業を処理する 2 つのマップがあります。

検索と挿入の時間はほぼ O(1) です。しかし、これはメモリ効率が良くありません。

他にどのようなアプローチを使用できますか?

4

1 に答える 1

1

(単語、頻度) のペアを取得したら、それらの配列を作成し、頻度で並べ替え、バイナリ検索を実行できます。これにより O(log n) へのアクセスが遅くなりますが、それが制約であれば、約半分のメモリでうまくいくことができます。

それ以外には、あなたがすでに行っていることよりも優れたものは何もありません。

于 2013-01-08T23:04:20.200 に答える