算法之寻找发帖"水王"

寻找发帖水王就是找出发的贴中,贴子总数占帖子一半以上的那个id

   

package com.test.algorithm;

/**
 * 如果每次删除两个不同的ID,那么剩下的ID列表中,“水王”ID出现的次数仍然超过总数的一半。看到
 * 这一点后,就可以通过不断重复这个过程,把ID列表中的ID总数降低(转化为更小的问题),从而得到
 * 问题的答案
 * @author ccna_zhang
 *
 */
public class TWODOT3 {

	public static void main(String[] args) {
		int[] array = {1, 2, 5, 7, 8, 1, 1, 1, 1, 4, 1};
		System.out.println(find(array, array.length));
	}
	
	public static int find(int[] array, int n) {
		int candidate = 0;    //要找的id
		int nTimes = 0;   //要找的id出现的次数
		for(int i = 0; i < n; i++) {
			if(nTimes == 0) {  //如果次数变为0,则重新指定candidate
				candidate = array[i];
				nTimes = 1;
			} else {
				if(candidate == array[i]) {  //如果candidate和array[i]的值相等,那么candidate出现的次数可以加1
					nTimes++;
				} else {
					nTimes--;    //如果不相等,那么candidate出现的次数减1
				}
			}
		}
		return candidate;
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

波哥的技术积累

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值