-1

文字列のリストがあるとしましょう(単純化)

fullList = {a,b,c,d,a,d,c,b}

みたいなカップルを見つけたい

couplesList = {{a,a},{b,b}, ...}

現時点で私がこの問題に取り組んでいる方法は

  1. 最初の要素を取得
  2. グアバ述語を使用して適切なオブジェクトを見つける
  3. 今何?

私は2つのオブジェクト{a、a}を持っていますがfullList、「イテレータ」スタイルの反復を使用していないため、それらを削除できません(Guava述語を使用しているため、とにかく機能しません-以来関数で見つかった要素へのイテレータポインタがありませんItarables.find(...))。

私も「効率的な」方法でやりたいので、複数のネストされたループなどは避けたいです。

この問題にもっと正しく/効率的な方法でアプローチする方法はありますか? 私は少し立ち往生しています。

4

1 に答える 1

6

各要素の頻度カウントを作成します。Guava の用語では、これは MultiSet です。そこから、ペアのコレクションとシングルの別のコレクションを作成できます。これは、元のリストの 1 つのパスと頻度カウント マップの 1 つのパスで実行できます。つまり、O(n)

于 2013-10-06T17:51:45.200 に答える