找水王

题目

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

思想:

水网发帖数超过总帖子数量的一半,所以将id两两比较,不相同就删除,直到最后剩下的就是水王

package Check;

import java.util.Random;

public class Main {
    
    public static void main(String args[])
    {
        int[] ID = new int[100];
        for (int i = 0; i < ID.length; i++) 
        {//循环给数组中的每个元素赋初值
            ID[i] = (int) (Math.random() * 6);//产生随机数并赋值给数组
            }
        for (int i = 0; i < ID.length; i++) 
        {
            System.out.println(ID[i]);
            }
        int[] p = new int[6];
        for(int i = 0; i < ID.length; i++)
        {
            if(ID[i] ==  1) p[0]++;
            if(ID[i] ==  2) p[1]++;
            if(ID[i] ==  3) p[2]++;
            if(ID[i] ==  4) p[3]++;
            if(ID[i] ==  5) p[4]++;
            if(ID[i] ==  6) p[5]++;
        }
        int max = 0;
        for(int i = 0;i<6;i++)
        {
            if(ID[i]>ID[max]) max = i;
        }
        System.out.println("水王为"+max);
        
        int[] k = new int[9];
        k[0] = 1;
        k[1] = 1;
        k[2] = 2;
        k[3] = 1;
        k[4] = 2;
        k[5] = 2;
        k[6] = 2;
        k[7] = 1;
        k[8] = 1;
        int result = k[0];
        int times = 0;
        for(int i = 0; i < 9; i++)
        {
            if(k[i] == result)
                times++;
            else
                times--;
            if(times == 0)
            {
                result = k[i];
                times = 1;
            }
        }
        System.out.println("水王为"+result);
        }
}

 

总结

整体来说不是太难,要实现功能还是比较简单的,但是真的要做到时间复杂度为O(n)却不容易。

需要用不一样的方法。

多创新的去思考,不能让自己的思维局限在一定的位置。

原文地址:https://www.cnblogs.com/zhoulonghai/p/10955451.html