三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。
如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?
1.设计思想
因为“水王”发帖数超过了一半,将相邻两两不同的ID消除,则剩下的为“水王”的ID。用一个一维数组a[]存储所有ID,令“水王”ID为数组中的第一个a[0],用一个整型j记录水王ID出现次数,相邻数比较相同则j++,不同则j- -,并且如果j<=0,则对水王换ID,进行循环判断,直至循环结束。
2.代码实现
import java.util.*;
2 public class ZSW {
3
4 public static void main(String[] args) {
5 Scanner sca=new Scanner(System.in);
6 System.out.println("输入帖子总数");
7 int count=sca.nextInt();
8 int a[]=new int[count];
9
10 int i,j=1,sw;//j为某个ID出现的次数,假设为sw(水王ID)出现的次数
11 System.out.println("输入帖子ID");
12 for(i=0;i<count;i++)
13 {
14 a[i]=sca.nextInt();
15 }
16 sw=a[0];//假设第一个数为水王ID
17 for(i=1;i<count;i++)
18 {
19 if(sw!=a[i])
20 {
21 j=j-1;
22 if(j<=0) //如果j<=0,则表示sw不是水王ID。因为水王发帖数大于一半,无论怎么抵消,都不会小于等于0
23 {
24 sw=a[i+1]; //所有要换其他ID为水王的ID
25 j=1; //重新定义水王ID出现次数
26 i++;
27 }
28 }
29 else
30 {
31 sw=a[i];
32 j=j+1;//统计水王帖子数
33 }
34 }
35 System.out.println("水王ID是 "+sw);
36 }
37 }
3.实现截图