查找水王

首先分析水王的特点,根据他的特点进行下手;

已知水王发帖数肯定超过总帖数的一半,我们可以充分利用这个条件,

那么如何体现出发帖数超过总帖数的一半并且遍历次数最少呢:

  这里应用抵消法来查找水王,。因为水王发帖数大于一半,无论怎么抵消,都不会小于等于0,剩下最后的id即为水王

源代码:

import java.util.Scanner;

public class shui {
    public static void main(String[] args) {
        Scanner sca=new Scanner(System.in);
        System.out.println("请输入帖子数量:");
        int count=sca.nextInt();
        int a[]=new int[count];
        System.out.println("请输入帖子id:");
        for(int i=0;i<count;i++)
        {
            a[i]=sca.nextInt();
        }
       max(a);
    }
    public  static void max(int a[]) {//寻找水王
        int c=1;//j为某个ID出现的次数
        int max;//假设max为(水王ID)出现的次数
        max=a[0];//假设第一个数为水王ID
        for(int i=1;i<a.length;i++)
        {
            if(max!=a[i])
            {
                c=c-1;
                if(c<=0)    //如果j<=0,则表示max不是水王ID。因为水王发帖数大于一半,无论怎么抵消,都不会小于等于0
                {
                    max=a[i+1];    //所有要换其他ID为水王的ID
                    c=1;        //重新定义水王ID出现次数
                    i++;
                }
            }
            else
            {
                max=a[i];
                c=c+1;//统计水王帖子数
            }
        }
        System.out.println("水王的id为: "+max);
    }
}

 

原文地址:https://www.cnblogs.com/sengzhao666/p/10951078.html