找水王

一、题目要求

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

二、解题思路

  1、把表中的 id 列取出,存入数组中。

  2、将数组的第一个元素(id)赋值给临时变量temp,计数变量num赋值1。

  3、用temp和下一个数据进行比较,若相等则num加一,若不相等num减一。

  4、若结束temp就是“水王”,若temp减到0,说明此时为止“默认水王”已经和其他的评论者抵消完了==开始的状态,执行第二步。

  5、因为“水王”发帖数目超过了帖子数目的一半,所有经过1-4,遍历一遍一定可以找到水王。

public class Findsw{
    public static void main(String[] args) {
        int p[]={18,10,10,3,10,10,10,9,5,10,11,10,13,13};
        int ID=find(p,p.length);
        System.out.println("水王的ID为:"+ID);}

    public static int find(int p[], int n){
        int temp=0,num=0;
        for (int i = 0; i < n; ++i){
            if(num==0){
                temp=p[i];
                num++;}
            else if(p[i]==temp){
                num++;}
            else {
                num--;}}       
        return temp;}}
View Code
原文地址:https://www.cnblogs.com/dg1137/p/13085187.html