找水王

找水王的题目为:

三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?

思路:若水王的id出现的次数超过一半以上,则他一定是水王,从一组id的数组里找出现次数最多的id,每个id出现的次数相互抵消,最后剩下的id一定是水王

代码为:

package 找水王;

public class find {

public static int king(int[] a)  
{  
    int s = a.length;
    int r = 0;// 需要查找的结果  
    int t = 0;// 出现的次数  
    for (int i = 0; i < s; i++)  
    {  
        // 如果次数等于0,重新指定结果  
        if (t == 0)  
        {  
            r = a[i];  
            t = 1;  
        }  
        else //水王的贴与其他人的贴相互抵消,剩下的一定是水王的 
        {  
            if (r == a[i])  
            {  
                ++t;  
            }  
            else  
            {  
                --t;  
            }  
        }  

    }  

    return r;  

}  
public static void main(String[] args) {
    int[] a = {1,2,1,2,5,7,8,2,2,2,2,4,2};  
            System.out.println("水王的ID为:"+king(a));
}

}  

一开始对找水王没有解题思路,其实就是找出出现次数超过一半的id就是水王。

运行结果为:

 

posted on 2019-06-02 16:10  方木Fengl  阅读(123)  评论(0编辑  收藏  举报

导航