1. 可以假设帖子的第一个ID是次数最大的,用candidate记录,次数用nTimes记录。
2. 遍历下一个ID,如果跟candidate一样,nTimes++,否则,遇到一个挑战,则nTimes--,如果nTimes == 0,下一步就要重复第一步了。
3.遍历结束,nTimes>0的那个candidate就是水王ID,他是获胜者。
- Type Find(Type* ID, int N)
- {
- Type candidate;
- int nTimes, i;
- for(i = nTimes = 0; i < N; i++)
- {
- if(nTimes == 0)
- {
- candidate = ID[i], nTimes = 1;
- }
- else
- {
- if(candidate == ID[i])
- nTimes++;
- else
- nTimes--;
- }
- }
- return candidate;
- }