编程之美-寻找超级发帖"水王" ,数组中超半数重复数的搜索

第一个简单的案例,一个家伙在论坛里每个人都回复了,其占所有帖子的总量超过了一半,快速找到这个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的帖子量超过了一半,否则数据没有意义。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值