找水王
题目:有一个大“水王”,他不仅喜欢发贴,还会回复其他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--; } } } }