找水王
三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他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.实现截图