6

リーダーボードを実装したいのですが、これは単純なタスクのように見えますが、非常に複雑になる可能性があることに気付きました。適切なインデックスを持つデータベースを使用することもできますが、次の操作をサポートできる効率的なデータ構造があるかどうかを知りたいです。

  • 特定のプレーヤーのスコアを追加する
  • 特定のプレーヤーのベストスコアを取得する
  • 特定のプレイヤーのランクを取得する
  • スコアが現在のプレイヤー ランクより上または下のプレイヤーを取得する
  • 異なる時間枠をサポート: 今日のスコア、今週、今年など。
  • 最大 100,000 プレーヤーまで拡張可能
  • メモリフットプリントをできるだけ小さくする (つまり、安価なマシンで実行する)

助けてくれてありがとう!

4

2 に答える 2

0

合計スコアに基づいてプレーヤー情報を保存するために、バイナリ検索ツリー(AVLや赤黒などのバランスの取れたツリー)を使用できます。プレーヤー構造内では、合計スコアと最高スコアに別々の変数を使用して、時間枠ごとに異なる配列を使用できます。特定のプレーヤーの下または上のランクまたはプレーヤーを見つけるには、順番にトラバーサルする必要があります。

于 2013-03-11T07:53:05.097 に答える