第三章:查找与排序(下)----------- 3.11 趣味拓展_寻找发帖水王

编程之美_寻找发帖水王:

变化:出现的次数恰好为个数的一半,求这个数。

关于加强版水王的题,可以通过扫描一遍数组就能解决问题:

水王占总数的一半,说明总数必为偶数;

不失一般性,假设每隔一个数就是水王的id,两两不同最后一定会消为0;

水王可能是最后一个元素,每次扫描到时候,多一个动作,和最后一个元素作比较,单独计数,计数恰好为一半;

如果不是,那么去掉最后一个元素,水王就是留下来的那个candidate

 

#include 
#include
using namespace std;

void waterKing(int arr[],int length){
	int candidate=arr[0];
	int nTime=0;
	int countOfLast=0;//统计最后这个元素出现的次数 
	int N=length;
	for(int i=0;i

结果:

 第三章:查找与排序(下)----------- 3.11 趣味拓展_寻找发帖水王_第1张图片

 

你可能感兴趣的:(#,1,算法很美)