プログラミングの美-スーパー投稿「水王」を探して、配列の中で過半数の重複数の検索


最初の簡単なケースは、一人のやつがフォーラムで誰もが返事をして、それはすべての投稿の総量の半分を超えて、急速にこのIDの原文の住所を見つけました: http://www.java2000.net/p11239
/**
 *     -    "  "。<br>
 *         ,         。      ID.
 * 
 * @author    ,Java   (java2000.net)
 * 
 */
public class T {

  /**
   *   ID.
   * 
   * @param id
   *                 ID
   * @return
   */
  public static int find(int[] id) {
    int rtn = Integer.MIN_VALUE;
    int nTimes, i;
    for (i = nTimes = 0; i < id.length; i++) {
      if (nTimes == 0) {
        rtn = id[i];
        nTimes = 1;
      } else {
        if (rtn == id[i]) {
          nTimes++;
        } else {
          nTimes--;
        }
      }
    }
    return rtn;
  }

  public static void main(String[] args) {
    int[] id = { 2, 3, 4, 5, 1, 2, 1, 3, 5, 7, 31, 3, 2, 2, 1, 12, 4, 56, 23, 12, 4, 1, 3, 4,
        2, 2, 1, 3, 1, 23, 1, 5, 3, 1, 3, 12, 1, 2, 1, 1, 1, 2, 2, 2 };
    System.out.println(find(id));
  }
}

 
実行結果
1
 
ヒント:この問題の前提は、IDの投稿数が半分を超えていることです.そうしないと、データは意味がありません.