寻找发贴水王

来源:互联网 发布:ubuntu 循环登录 编辑:程序博客网 时间:2024/05/01 06:25

寻找发贴水王,水王的帖子数目超过总数的一半

解法:每次删除两个不同的ID,最后剩下来的不能删除的就是水王的ID

实现: 1.本例用一个数组模拟帖子,其中有一个标号的帖子超过总数的一半

      2.先存放第一个ID,后面的ID来比较,若值相同,则,计数器加1;

若不相同:

若此时计数器不为0.则计数器减一

若此时计数器为0.则替换值,计数器加1

3.遍历数组一边,保存下来的值就是模拟的水王

代码实现:

#include<iostream>using namespace std;struct KingNode{        int value;        int count;};int findKing(int post[], int len){        KingNode king;          king.value=-1;        king.count=0;        for(int i=0; i<len; i++){                if(post[i] != king.value){                        if(king.count == 0){                                king.value = post[i];                                king.count++;                        }else                                king.count--;                }else                        king.count++;        }        return king.value;}int main(){        int post[]={2,5,6,1,3,2,42,2,5,2,2,2,2};        int post1[]={2,2,2,1,3,2,42,2,5,2,3,2,7};        int len=sizeof(post)/sizeof(int);        std::cout<<"the post king is: "<<findKing(post,len)<<endl;        std::cout<<"the post1 king is: "<<findKing(post1,len)<<endl;        return 0;}

运行结果:





题外话,如果自己都看不起自己,那活着还有什么意义?

原创粉丝点击