找水王

题目:有一个大“水王”,他不仅喜欢发贴,还会回复其他ID发的每个帖子。该“水王”发帖数目超过了帖子总数的一半。如果有当前论坛上所有帖子(包括回帖)的列表,其中帖子作者的ID也在表中,你能快速找出这个传说中的水王吗?

思路:采用“两两相消”的办法,对帖子进行一次遍历,相邻id相同的留下,不同的消除,由于“水王”占了数量的一半以上,因此最后留下id的一定是水王的

package ad;
 
import java.util.Scanner;
 
public class b {
 
static int id = 0;
static int num = 0;
static Scanner input=new Scanner(System.in);
static int n ;
public static void main(String[] args) {
            int i;
            int count = 0;
             
            System.out.println("请输入总数:");
            n = input.nextInt();
            System.out.println("请输入帖子id:");
            int[] arr= new int[n];
            for(i = 0;i < n;i++)
            {
                    arr[i]=input.nextInt();
            }
            deal(arr,n);
            for(i = 0;i < n;i++)
            {
                    if(arr[i] == id)
                    {
                        count++;
                    }
            }
            System.out.println("水王的id是:"+id);
            }       
        static void deal(int arr[],int n)
        {
            for (int i = 0;i < n;i++)
            {
                if (num == 0) //当前灌水的id数量变为0或者抵消成为了0
                {
                    num++; //灌水帖子数量+1
                    id = arr[i];//Id记录当前灌水Id
                }
                else
                {
                    if(id == arr[i])//如果后面帖子与当前帖子Id相同则Id数量+1
                        num++;
                    else //如果不同,则抵消一个当前Id
                        num--;
                }
            }
             
        }
    }

原文地址:https://www.cnblogs.com/liuleliu/p/13059933.html