课堂练习-找水王续

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

随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗?

一、设计思路

 本次实验练习与上次比较相似,所以通过类似于“两两相消”的方法,标记并找出出现次数最多的三个数。

二、程序源代码

package test;
import java.util.*;
public class shuiwang2 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入数组的长度:");
        int length = input.nextInt();
        int[] id = new int[length];
        System.out.println("请输入数组:");
        for(int i=0;i<length;i++)
        {
            id[i] = input.nextInt();
        }   
        int id1=0,id2=0,id3=0;
        int t1=0,t2=0,t3=0;

        for(int i=0;i<length;i++)
        {
            if(t1==0 && id[i]!=id2 && id[i]!=id3)
            {
                id1=id[i];
                t1++;
            }
            else if(t2==0 && id[i]!=id1 && id[i]!=id3)
            {
                id2=id[i];
                t2++;
            }
            else if(t3==0 && id[i]!=id1 && id[i]!=id2)
            {
                id3=id[i];
                t3++;
            }
            else if(id[i]!=id1 && id[i]!=id2 && id[i]!=id3)
            {
                t1--;
                t2--;
                t3--;
            }
            else if(id[i]==id1)
            {
                t1++;
            }
            else if(id[i]==id2)
            {
                t2++;
            }
            else if(id[i]==id3)
            {
                t3++;
            }
        } 
        System.out.println("水王的id分别是:" + id1 + "," + id2 + "," + id3);
    }
}

三、结果截图

 

四、个人总结

本次实验与上次较为相似,主要思路的稍微转化。在做其他的程序的时候,我们也应当有这样的注意。

原文地址:https://www.cnblogs.com/crazy-soul/p/5535587.html