寻找小水王

Posted 枫棂叶澜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了寻找小水王相关的知识,希望对你有一定的参考价值。

寻找发帖“水王”问题的扩展:有3个发帖很多的ID,他们的发帖数目都超过了帖子总数目N的1/4。你能从发帖ID列表中快速找出他们的ID吗?

 

(一)分析:

重复删除四个不同的ID,可能包含发帖数目超过总数1/4的ID,原先发帖比例大于1/4的ID所占比例仍然大于1/4,不断重复,把ID列表中的ID总数降低,可得到答案

(二)代码:

package test;

public class LittleWater {


    static void Find(int ID[],int N,int water[])
    {
        int nTimes[]={0,0,0};
        for(int i=0;i<N;i++)
        {
            if(ID[i]==water[0])
            {nTimes[0]++;}
            else if(ID[i]==water[1])
            {nTimes[1]++;}
            else if(ID[i]==water[1])
            {nTimes[2]++;}
            else if(nTimes[0]==0)
            {
                nTimes[0]=1;
                water[0]=ID[i];
            }
            else if(nTimes[1]==0)
            {
                nTimes[1]=1;
                water[1]=ID[i];
            }
            else if(nTimes[2]==0)
            {
                nTimes[2]=1;
                water[2]=ID[i];
            }
            else
            {
                nTimes[0]--;
                nTimes[1]--;
                nTimes[2]--;
            }
        }
        System.out.println("三个符合条件的水王为:");
        for(int i=0;i<3;i++)
        {
            System.out.print(water[i]+" ");
        }
    }
    public static void main(String args[])
    {
        int ID[]={1,2,1,3,4,4,4,4,5,6,1,7,2,2,2,1};
        int N=16;
        int water[] = {-1,-1,-1};
         
        System.out.println("ID列表为:");
        for(int i=0;i<N;i++)
        {
            System.out.print(ID[i]+" ");
        }
        System.out.println();
        Find(ID,N,water);
    }
}

 

(三)截图:

 

以上是关于寻找小水王的主要内容,如果未能解决你的问题,请参考以下文章

寻找小水王

寻找小水王

寻找小水王

找小水王

课堂测试-找小水王

找小水王