找水王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 }

 截图:

总结:本题思考起来有些难度,因为和自己第一次的思路不是完全的一样(主要是删除元素时)

原文地址:https://www.cnblogs.com/brucekun/p/5540574.html