由于要满足equi-leader,则必须是整个数组的leader,证明如下:leader > i+1/2 && leader > (n-i-1)/2,那么leader > n/2

我之前c++写了,但是有错五

 1 static int equiLeader(int[] a){
 2   int len = a.length;
 3   int equi_leaders = 0;
 4 
 5   // first, compute the leader
 6   int leader = a[0];
 7   int ctr = 1;
 8 
 9   for(int i = 1; i < a.length; i++){
10     if(a[i] == leader) ctr++;
11     else ctr--;
12     if(ctr == 0){
13       ctr = 1;
14       leader = a[i];
15     }
16   }
17 
18   // check if it's a leader?
19   int total = 0;
20   for(int i : a){
21     if(i == leader) total++; 
22   }
23 
24   if(total <= (len/2)) return 0; // impossible
25 
26   int ldrCount = 0;
27   for(int i = 0; i < a.length; i++){
28     if(a[i] == leader) ldrCount++;
29     int leadersInRightPart = (total - ldrCount);
30     if(ldrCount > (i+1)/2   &&   leadersInRightPart > (len-i-1)/2){
31       equi_leaders++;
32     }
33   }
34 
35   return equi_leaders;
36 }