3

私は状況に行き詰まっています。私の問題は、0 から 5,000 までの値を持つことができる整数配列で最も繰り返される数を取得することです。この数値は、少なくともn /4 回繰り返す必要があります。ここで、nは配列の長さです。

少なくともn /2 回繰り返される要素を抽出することを見てきました。しかし、それを自分の要件に合わせて変更することはできませんでした。また、私のものは文字配列ではないため、繰り返し数のインデックスをインクリメントするために 5,000 サイズの配列を作成することはできません。

4

1 に答える 1

9

これが私がこれにアプローチする方法です。これは、この種の問題には理にかなっていると思います。

  1. qsort()もちろん、配列を(その場で)並べ替えます。もちろん、持っている場合は簡単に使用できます。
  2. 配列の値が変化するたびにリセットするカウンターを維持しながら反復し、カウンターが n/4 に達したら、どの数値に対してそれを行ったかを覚えておきます。
  3. 終わり。

ここで重要なことは、並べ替えにより、すべての同一要素を単一のシーケンスにグループ化することで、各要素を一度にカウントすることが簡単になることです。これにより、カウントが簡単になります。

于 2012-08-31T09:19:58.523 に答える