编程之美--寻找发帖“水王”的扩张问题--代码实现

    编程之美中寻找发帖“水王”一节的扩展问题:随着Tango的发展,管理员发现“超级水王”没有了。统计结果表明,有3个发帖很多的ID,他们的发帖数目都超过了帖子总数目N的1/4。问如何从发帖ID列表中快速找到他们的ID?具体的代码实现如下(思想和原问题相同):

int *findID(int *ID,int n)
{
    int candidate[3];
	int nTimes[3]={0};
	for(int i=0;i<n;i++){
		if(nTimes[0]==0){
			if(candidate[1]==ID[i])
				nTimes[1]++;
			else if(candidate[2]==ID[i])
				nTimes[2]++;
			else{
				candidate[0]=ID[i];
				nTimes[0]++;
			}
		}else if(nTimes[1]==0){
			if(candidate[0]==ID[i])
				nTimes[0]++;
			else if(candidate[2]==ID[i])
				nTimes[2]++;
			else{
				candidate[1]=ID[i];
				nTimes[1]++;
			}
		}else if(nTimes[2]==0){
			if(candidate[1]==ID[i])
				nTimes[1]++;
			else if(candidate[0]==ID[i])
				nTimes[0]++;
			else{
				candidate[2]=ID[i];
				nTimes[2]++;
			}
		}else{
			if(candidate[0]==ID[i])
				nTimes[0]++;
			else if(candidate[1]==ID[i])
				nTimes[1]++;
			else if(candidate[2]==ID[i])
				nTimes[2]++;
			else{
				nTimes[0]--;
				nTimes[1]--;
				nTimes[2]--;
			}
		}
	}
	return candidate;
}

不对之处请多多指正。

    原文作者:taihejin
    原文地址: https://blog.csdn.net/taihejin/article/details/17763757
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞