找水王2
一、题目
一段时间之后,大水王消失了,出现了三个小水王,他们每一个人发帖数超过了总数的1/4.
要求:如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这三个小水王吗?
二、解题思路
将第一次找水王的套路扩展一下,每次删除四个不同的结点,最后就能得到三只水王
三、程序代码
1 package water_king; 2 3 public class Water_King { 4 5 public static void main(String[] args) { 6 int ID[]={1,1,1,2,2,2,3,3,3,4}; 7 int n=10; 8 int times[]=new int[3]; 9 int king[] =new int[3]; 10 times[0]=times[1]=times[2]=0; 11 king[0]=king[1]=king[2]=-1; 12 for(int i=0;i<n;i++){ 13 if(ID[i]==king[0]) 14 { 15 times[0]++; 16 } 17 else if(ID[i]==king[1]) 18 { 19 times[1]++; 20 } 21 else if(ID[i]==king[2]) 22 { 23 times[2]++; 24 } 25 else if(times[0]==0) 26 { 27 times[0]=1; 28 king[0]=ID[i]; 29 } 30 else if(times[1]==0) 31 { 32 times[1]=1; 33 king[1]=ID[i]; 34 } 35 else if(times[2]==0) 36 { 37 times[2]=1; 38 king[2]=ID[i]; 39 } 40 else//此时删除四个不同元素 41 { 42 times[0]--; 43 times[1]--; 44 times[2]--; 45 } 46 } 47 System.out.println("水王的ID:"); 48 for(int j=0;j<3;j++) 49 { 50 System.out.print(king[j]+" "); 51 } 52 } 53 54 }
截图:
总结:本题思考起来有些难度,因为和自己第一次的思路不是完全的一样(主要是删除元素时)