Tasks Details
easy
1.
EquiLeader
Find the index S such that the leaders of the sequences A[0], A[1], ..., A[S] and A[S + 1], A[S + 2], ..., A[N - 1] are the same.
Task Score
100%
Correctness
100%
Performance
100%
A non-empty array A consisting of N integers is given.
The leader of this array is the value that occurs in more than half of the elements of A.
An equi leader is an index S such that 0 ≤ S < N − 1 and two sequences A[0], A[1], ..., A[S] and A[S + 1], A[S + 2], ..., A[N − 1] have leaders of the same value.
For example, given array A such that:
A[0] = 4 A[1] = 3 A[2] = 4 A[3] = 4 A[4] = 4 A[5] = 2we can find two equi leaders:
- 0, because sequences: (4) and (3, 4, 4, 4, 2) have the same leader, whose value is 4.
- 2, because sequences: (4, 3, 4) and (4, 4, 2) have the same leader, whose value is 4.
The goal is to count the number of equi leaders.
Write a function:
class Solution { public int solution(int[] A); }
that, given a non-empty array A consisting of N integers, returns the number of equi leaders.
For example, given:
A[0] = 4 A[1] = 3 A[2] = 4 A[3] = 4 A[4] = 4 A[5] = 2the function should return 2, as explained above.
Write an efficient algorithm for the following assumptions:
- N is an integer within the range [1..100,000];
- each element of array A is an integer within the range [−1,000,000,000..1,000,000,000].
Copyright 2009–2025 by Codility Limited. All Rights Reserved. Unauthorized copying, publication or disclosure prohibited.
Solution
Programming language used Java 21
Time spent on task 26 minutes
Notes
not defined yet
Code: 06:26:02 UTC,
java,
verify,
result: Failed
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
class Solution {
public int solution(int[] A) {
Leader leader = getLeader(A);
if ( leader == null ) { return 0; }
int equileaders = 0, leaderCounter =0, len = A.length;
for(int i=0; i + 1 < len ; ++i) {
if(A[i] == leader.value) {
++leaderCounter;
}
if ((leaderCounter > (i/2) && (leader.ocurrences - leaderCounter)>(len - i)/2 ) {
++equileaders;
}
}
return equileaders;
}
public static class Leader {
int ocurrences;
int value;
public Leader(int value, int occurrences) {
this.value = value;
this.ocurrences = ocurrences;
}
}
public Leader getLeader(int[] A) {
int indexOfCandidate = -1;
int stackCounter = 0, candidate=-1, value=-1, i =0;
for(int element: A ) {
if (stackCounter == 0) {
value = element;
++stackCounter;
indexOfCandidate = i;
} else {
if (value == element) {
++stackCounter;
} else {
--stackCounter;
}
}
++i;
}
if (stackCounter > 0 ) {
candidate = value;
} else {
return null;
}
int countRepetitions = 0;
for (int element: A) {
if( element == candidate) {
++countRepetitions;
}
}
if(countRepetitions > (A.length / 2)) {
return new Leader(A[indexOfCandidate], countRepetitions);
}
return null;
}
}
Analysis
Compile error
Solution.java:12: error: ')' expected if ((leaderCounter > (i/2) && (leader.ocurrences - leaderCounter)>(len - i)/2 ) { ^ 1 error
Code: 06:26:14 UTC,
java,
verify,
result: Failed
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
class Solution {
public int solution(int[] A) {
Leader leader = getLeader(A);
if ( leader == null ) { return 0; }
int equileaders = 0, leaderCounter =0, len = A.length;
for(int i=0; i + 1 < len ; ++i) {
if(A[i] == leader.value) {
++leaderCounter;
}
if ((leaderCounter > (i/2) && (leader.ocurrences - leaderCounter)>(len - i)/2) ) {
++equileaders;
}
}
return equileaders;
}
public static class Leader {
int ocurrences;
int value;
public Leader(int value, int occurrences) {
this.value = value;
this.ocurrences = ocurrences;
}
}
public Leader getLeader(int[] A) {
int indexOfCandidate = -1;
int stackCounter = 0, candidate=-1, value=-1, i =0;
for(int element: A ) {
if (stackCounter == 0) {
value = element;
++stackCounter;
indexOfCandidate = i;
} else {
if (value == element) {
++stackCounter;
} else {
--stackCounter;
}
}
++i;
}
if (stackCounter > 0 ) {
candidate = value;
} else {
return null;
}
int countRepetitions = 0;
for (int element: A) {
if( element == candidate) {
++countRepetitions;
}
}
if(countRepetitions > (A.length / 2)) {
return new Leader(A[indexOfCandidate], countRepetitions);
}
return null;
}
}
Analysis
expand all
Example tests
1.
1.358 s
WRONG ANSWER,
got 0 expected 2
Code: 06:26:36 UTC,
java,
verify,
result: Failed
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
class Solution {
public int solution(int[] A) {
Leader leader = getLeader(A);
if ( leader == null ) { return 0; }
int equileaders = 0, leaderCounter =0, len = A.length;
for(int i=0; i < len ; ++i) {
if(A[i] == leader.value) {
++leaderCounter;
}
if ((leaderCounter > (i/2) && (leader.ocurrences - leaderCounter)>(len - i)/2) ) {
++equileaders;
}
}
return equileaders;
}
public static class Leader {
int ocurrences;
int value;
public Leader(int value, int occurrences) {
this.value = value;
this.ocurrences = ocurrences;
}
}
public Leader getLeader(int[] A) {
int indexOfCandidate = -1;
int stackCounter = 0, candidate=-1, value=-1, i =0;
for(int element: A ) {
if (stackCounter == 0) {
value = element;
++stackCounter;
indexOfCandidate = i;
} else {
if (value == element) {
++stackCounter;
} else {
--stackCounter;
}
}
++i;
}
if (stackCounter > 0 ) {
candidate = value;
} else {
return null;
}
int countRepetitions = 0;
for (int element: A) {
if( element == candidate) {
++countRepetitions;
}
}
if(countRepetitions > (A.length / 2)) {
return new Leader(A[indexOfCandidate], countRepetitions);
}
return null;
}
}
Analysis
expand all
Example tests
1.
1.344 s
WRONG ANSWER,
got 0 expected 2
Code: 06:29:11 UTC,
java,
verify,
result: Failed
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
class Solution {
public int solution(int[] A) {
Leader leader = getLeader(A);
if ( leader == null ) { return 0; }
int equileaders = 0, leaderCounter =0, len = A.length;
for(int i=0; i < len ; ++i) {
if(A[i] == leader.value) {
++leaderCounter;
}
if ((leaderCounter > (i/2) && (leader.ocurrences - leaderCounter)>(len-1 - i)/2) ) {
++equileaders;
}
}
return equileaders;
}
public static class Leader {
int ocurrences;
int value;
public Leader(int value, int occurrences) {
this.value = value;
this.ocurrences = ocurrences;
}
}
public Leader getLeader(int[] A) {
int indexOfCandidate = -1;
int stackCounter = 0, candidate=-1, value=-1, i =0;
for(int element: A ) {
if (stackCounter == 0) {
value = element;
++stackCounter;
indexOfCandidate = i;
} else {
if (value == element) {
++stackCounter;
} else {
--stackCounter;
}
}
++i;
}
if (stackCounter > 0 ) {
candidate = value;
} else {
return null;
}
int countRepetitions = 0;
for (int element: A) {
if( element == candidate) {
++countRepetitions;
}
}
if(countRepetitions > (A.length / 2)) {
return new Leader(A[indexOfCandidate], countRepetitions);
}
return null;
}
}
Analysis
expand all
Example tests
1.
1.326 s
WRONG ANSWER,
got 0 expected 2
Code: 06:31:12 UTC,
java,
verify,
result: Failed
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
class Solution {
public int solution(int[] A) {
Leader leader = getLeader(A);
if ( leader == null ) { return 0; }
int equileaders = 0, leaderCounter =0, len = A.length;
for(int i=0; i < len ; ++i) {
if(A[i] == leader.value) {
++leaderCounter;
}
if ((leaderCounter > (i/2) && (leader.ocurrences - leaderCounter)>(len-1 - i)/2) ) {
++equileaders;
}
}
return equileaders;
}
public static class Leader {
int ocurrences;
int value;
public Leader(int value, int occurrences) {
this.value = value;
this.ocurrences = ocurrences;
}
}
public Leader getLeader(int[] A) {
int indexOfCandidate = -1;
int stackCounter = 0, candidate=-1, value=-1, i =0;
for(int element: A ) {
if (stackCounter == 0) {
value = element;
++stackCounter;
indexOfCandidate = i;
} else {
if (value == element) {
++stackCounter;
} else {
--stackCounter;
}
}
++i;
}
if (stackCounter > 0 ) {
candidate = value;
} else {
return null;
}
int countRepetitions = 0;
for (int element: A) {
if( element == candidate) {
++countRepetitions;
}
}
if(countRepetitions > (A.length / 2)) {
return new Leader(candidate, countRepetitions);
}
return null;
}
}
Analysis
expand all
Example tests
1.
1.330 s
WRONG ANSWER,
got 0 expected 2
Code: 06:33:00 UTC,
java,
verify,
result: Failed
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
class Solution {
public int solution(int[] A) {
Leader leader = getLeader(A);
if ( leader == null ) { return 0; }
int equileaders = 0, leaderCounter =0, len = A.length;
System.out.println("v: " + leader.value + ", o:" + leader.ocurrences);
for(int i=0; i < len ; ++i) {
if(A[i] == leader.value) {
++leaderCounter;
}
if ((leaderCounter > (i/2) && (leader.ocurrences - leaderCounter)>(len- i)/2) ) {
++equileaders;
}
}
return equileaders;
}
public static class Leader {
int ocurrences;
int value;
public Leader(int value, int occurrences) {
this.value = value;
this.ocurrences = ocurrences;
}
}
public Leader getLeader(int[] A) {
int indexOfCandidate = -1;
int stackCounter = 0, candidate=-1, value=-1, i =0;
for(int element: A ) {
if (stackCounter == 0) {
value = element;
++stackCounter;
indexOfCandidate = i;
} else {
if (value == element) {
++stackCounter;
} else {
--stackCounter;
}
}
++i;
}
if (stackCounter > 0 ) {
candidate = value;
} else {
return null;
}
int countRepetitions = 0;
for (int element: A) {
if( element == candidate) {
++countRepetitions;
}
}
if(countRepetitions > (A.length / 2)) {
return new Leader(candidate, countRepetitions);
}
return null;
}
}
Analysis
expand all
Example tests
1.
0.981 s
WRONG ANSWER,
got 0 expected 2
stdout:
v: 4, o:0
Code: 06:34:52 UTC,
java,
verify,
result: Failed
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
class Solution {
public int solution(int[] A) {
Leader leader = getLeader(A);
if ( leader == null ) { return 0; }
int equileaders = 0, leaderCounter =0, len = A.length;
//System.out.println("v: " + leader.value + ", o:" + leader.ocurrences);
for(int i=0; i < len ; ++i) {
if(A[i] == leader.value) {
++leaderCounter;
}
if ((leaderCounter > (i/2) && (leader.ocurrences - leaderCounter)>(len- i)/2) ) {
++equileaders;
}
}
return equileaders;
}
public static class Leader {
int ocurrences;
int value;
public Leader(int value, int occurrences) {
this.value = value;
this.ocurrences = ocurrences;
}
}
public Leader getLeader(int[] A) {
int indexOfCandidate = -1;
int stackCounter = 0, candidate=-1, value=-1, i =0;
for(int element: A ) {
if (stackCounter == 0) {
value = element;
++stackCounter;
indexOfCandidate = i;
} else {
if (value == element) {
++stackCounter;
} else {
--stackCounter;
}
}
++i;
}
if (stackCounter > 0 ) {
candidate = value;
} else {
return null;
}
int countRepetitions = 0;
for (int element: A) {
if( element == candidate) {
++countRepetitions;
}
}
if(countRepetitions > (A.length / 2)) {
System.out.println("v: " + candidate + ", o:" + countRepetitions);
return new Leader(candidate, countRepetitions);
}
return null;
}
}
Analysis
expand all
Example tests
1.
1.056 s
WRONG ANSWER,
got 0 expected 2
stdout:
v: 4, o:4
Code: 06:35:22 UTC,
java,
verify,
result: Failed
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
class Solution {
public int solution(int[] A) {
Leader leader = getLeader(A);
if ( leader == null ) { return 0; }
int equileaders = 0, leaderCounter =0, len = A.length;
System.out.println("v: " + leader.value + ", o:" + leader.ocurrences);
for(int i=0; i < len ; ++i) {
if(A[i] == leader.value) {
++leaderCounter;
}
if ((leaderCounter > (i/2) && (leader.ocurrences - leaderCounter)>(len- i)/2) ) {
++equileaders;
}
}
return equileaders;
}
public static class Leader {
int ocurrences;
int value;
public Leader(int value, int occurrences) {
this.value = value;
this.ocurrences = ocurrences;
}
}
public Leader getLeader(int[] A) {
int indexOfCandidate = -1;
int stackCounter = 0, candidate=-1, value=-1, i =0;
for(int element: A ) {
if (stackCounter == 0) {
value = element;
++stackCounter;
indexOfCandidate = i;
} else {
if (value == element) {
++stackCounter;
} else {
--stackCounter;
}
}
++i;
}
if (stackCounter > 0 ) {
candidate = value;
} else {
return null;
}
int countRepetitions = 0;
for (int element: A) {
if( element == candidate) {
++countRepetitions;
}
}
if(countRepetitions > (A.length / 2)) {
System.out.println("v: " + candidate + ", c:" + countRepetitions);
return new Leader(candidate, countRepetitions);
}
return null;
}
}
Analysis
expand all
Example tests
1.
1.353 s
WRONG ANSWER,
got 0 expected 2
stdout:
v: 4, c:4 v: 4, o:0
Code: 06:35:45 UTC,
java,
verify,
result: Failed
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
class Solution {
public int solution(int[] A) {
Leader leader = getLeader(A);
if ( leader == null ) { return 0; }
int equileaders = 0, leaderCounter =0, len = A.length;
System.out.println("v: " + leader.value + ", o:" + leader.ocurrences);
for(int i=0; i < len ; ++i) {
if(A[i] == leader.value) {
++leaderCounter;
}
if ((leaderCounter > (i/2) && (leader.ocurrences - leaderCounter)>(len- i)/2) ) {
++equileaders;
}
}
return equileaders;
}
public static class Leader {
int ocurrences;
int value;
public Leader(int value, int occurrences) {
this.value = value;
this.ocurrences = ocurrences;
}
}
public Leader getLeader(int[] A) {
int indexOfCandidate = -1;
int stackCounter = 0, candidate=-1, value=-1, i =0;
for(int element: A ) {
if (stackCounter == 0) {
value = element;
++stackCounter;
indexOfCandidate = i;
} else {
if (value == element) {
++stackCounter;
} else {
--stackCounter;
}
}
++i;
}
if (stackCounter > 0 ) {
candidate = value;
} else {
return null;
}
int countRepetitions = 0;
for (int element: A) {
if( element == candidate) {
++countRepetitions;
}
}
if(countRepetitions > (A.length / 2)) {
System.out.println("v: " + candidate + ", c:" + countRepetitions);
return new Leader(candidate, countRepetitions);
}
return null;
}
}
Analysis
expand all
Example tests
1.
1.345 s
WRONG ANSWER,
got 0 expected 2
stdout:
v: 4, c:4 v: 4, o:0
Code: 06:36:27 UTC,
java,
verify,
result: Failed
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
class Solution {
public int solution(int[] A) {
Leader leader = getLeader(A);
if ( leader == null ) { return 0; }
int equileaders = 0, leaderCounter =0, len = A.length;
System.out.println("v: " + leader.value + ", o:" + leader.ocurrences);
for(int i=0; i < len ; ++i) {
if(A[i] == leader.value) {
++leaderCounter;
}
if ((leaderCounter > (i/2) && (leader.ocurrences - leaderCounter)>(len- i)/2) ) {
++equileaders;
}
}
return equileaders;
}
public static class Leader {
int ocurrences;
int value;
public Leader(int value, int occurrences) {
this.value = value;
this.ocurrences = ocurrences;
System.out.println("v: " + this.value + ", c:" + this.ocurrences);
}
}
public Leader getLeader(int[] A) {
int indexOfCandidate = -1;
int stackCounter = 0, candidate=-1, value=-1, i =0;
for(int element: A ) {
if (stackCounter == 0) {
value = element;
++stackCounter;
indexOfCandidate = i;
} else {
if (value == element) {
++stackCounter;
} else {
--stackCounter;
}
}
++i;
}
if (stackCounter > 0 ) {
candidate = value;
} else {
return null;
}
int countRepetitions = 0;
for (int element: A) {
if( element == candidate) {
++countRepetitions;
}
}
if(countRepetitions > (A.length / 2)) {
return new Leader(candidate, countRepetitions);
}
return null;
}
}
Analysis
expand all
Example tests
1.
1.367 s
WRONG ANSWER,
got 0 expected 2
stdout:
v: 4, c:0 v: 4, o:0
Code: 06:36:46 UTC,
java,
verify,
result: Failed
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
class Solution {
public int solution(int[] A) {
Leader leader = getLeader(A);
if ( leader == null ) { return 0; }
int equileaders = 0, leaderCounter =0, len = A.length;
System.out.println("v: " + leader.value + ", o:" + leader.ocurrences);
for(int i=0; i < len ; ++i) {
if(A[i] == leader.value) {
++leaderCounter;
}
if ((leaderCounter > (i/2) && (leader.ocurrences - leaderCounter)>(len- i)/2) ) {
++equileaders;
}
}
return equileaders;
}
public static class Leader {
int ocurrences;
int value;
public Leader(int value, int ocurrences) {
this.value = value;
this.ocurrences = ocurrences;
System.out.println("v: " + this.value + ", c:" + this.ocurrences);
}
}
public Leader getLeader(int[] A) {
int indexOfCandidate = -1;
int stackCounter = 0, candidate=-1, value=-1, i =0;
for(int element: A ) {
if (stackCounter == 0) {
value = element;
++stackCounter;
indexOfCandidate = i;
} else {
if (value == element) {
++stackCounter;
} else {
--stackCounter;
}
}
++i;
}
if (stackCounter > 0 ) {
candidate = value;
} else {
return null;
}
int countRepetitions = 0;
for (int element: A) {
if( element == candidate) {
++countRepetitions;
}
}
if(countRepetitions > (A.length / 2)) {
return new Leader(candidate, countRepetitions);
}
return null;
}
}
Analysis
expand all
Example tests
1.
1.370 s
WRONG ANSWER,
got 1 expected 2
stdout:
v: 4, c:4 v: 4, o:4
Code: 06:37:14 UTC,
java,
verify,
result: Failed
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
class Solution {
public int solution(int[] A) {
Leader leader = getLeader(A);
if ( leader == null ) { return 0; }
int equileaders = 0, leaderCounter =0, len = A.length;
//System.out.println("v: " + leader.value + ", o:" + leader.ocurrences);
for(int i=0; i < len ; ++i) {
if(A[i] == leader.value) {
++leaderCounter;
}
if ((leaderCounter > (i/2) && (leader.ocurrences - leaderCounter)>(len-1- i)/2) ) {
++equileaders;
}
}
return equileaders;
}
public static class Leader {
int ocurrences;
int value;
public Leader(int value, int ocurrences) {
this.value = value;
this.ocurrences = ocurrences;
}
}
public Leader getLeader(int[] A) {
int indexOfCandidate = -1;
int stackCounter = 0, candidate=-1, value=-1, i =0;
for(int element: A ) {
if (stackCounter == 0) {
value = element;
++stackCounter;
indexOfCandidate = i;
} else {
if (value == element) {
++stackCounter;
} else {
--stackCounter;
}
}
++i;
}
if (stackCounter > 0 ) {
candidate = value;
} else {
return null;
}
int countRepetitions = 0;
for (int element: A) {
if( element == candidate) {
++countRepetitions;
}
}
if(countRepetitions > (A.length / 2)) {
return new Leader(candidate, countRepetitions);
}
return null;
}
}
Analysis
expand all
Example tests
1.
1.376 s
WRONG ANSWER,
got 3 expected 2
Code: 06:37:32 UTC,
java,
verify,
result: Failed
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
class Solution {
public int solution(int[] A) {
Leader leader = getLeader(A);
if ( leader == null ) { return 0; }
int equileaders = 0, leaderCounter =0, len = A.length;
//System.out.println("v: " + leader.value + ", o:" + leader.ocurrences);
for(int i=0; i < len ; ++i) {
if(A[i] == leader.value) {
++leaderCounter;
}
if ((leaderCounter > (i/2) && (leader.ocurrences - leaderCounter)>(len- i)/2) ) {
++equileaders;
}
}
return equileaders;
}
public static class Leader {
int ocurrences;
int value;
public Leader(int value, int ocurrences) {
this.value = value;
this.ocurrences = ocurrences;
}
}
public Leader getLeader(int[] A) {
int indexOfCandidate = -1;
int stackCounter = 0, candidate=-1, value=-1, i =0;
for(int element: A ) {
if (stackCounter == 0) {
value = element;
++stackCounter;
indexOfCandidate = i;
} else {
if (value == element) {
++stackCounter;
} else {
--stackCounter;
}
}
++i;
}
if (stackCounter > 0 ) {
candidate = value;
} else {
return null;
}
int countRepetitions = 0;
for (int element: A) {
if( element == candidate) {
++countRepetitions;
}
}
if(countRepetitions > (A.length / 2)) {
return new Leader(candidate, countRepetitions);
}
return null;
}
}
Analysis
expand all
Example tests
1.
1.446 s
WRONG ANSWER,
got 1 expected 2
Code: 06:37:56 UTC,
java,
verify,
result: Failed
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
class Solution {
public int solution(int[] A) {
Leader leader = getLeader(A);
if ( leader == null ) { return 0; }
int equileaders = 0, leaderCounter =0, len = A.length;
//System.out.println("v: " + leader.value + ", o:" + leader.ocurrences);
for(int i=0; i < len ; ++i) {
if(A[i] == leader.value) {
++leaderCounter;
if ((leaderCounter > (i/2) && (leader.ocurrences - leaderCounter)>(len- i)/2) ) {
++equileaders;
}
}
}
return equileaders;
}
public static class Leader {
int ocurrences;
int value;
public Leader(int value, int ocurrences) {
this.value = value;
this.ocurrences = ocurrences;
}
}
public Leader getLeader(int[] A) {
int indexOfCandidate = -1;
int stackCounter = 0, candidate=-1, value=-1, i =0;
for(int element: A ) {
if (stackCounter == 0) {
value = element;
++stackCounter;
indexOfCandidate = i;
} else {
if (value == element) {
++stackCounter;
} else {
--stackCounter;
}
}
++i;
}
if (stackCounter > 0 ) {
candidate = value;
} else {
return null;
}
int countRepetitions = 0;
for (int element: A) {
if( element == candidate) {
++countRepetitions;
}
}
if(countRepetitions > (A.length / 2)) {
return new Leader(candidate, countRepetitions);
}
return null;
}
}
Analysis
expand all
Example tests
1.
1.319 s
WRONG ANSWER,
got 0 expected 2
Code: 06:38:03 UTC,
java,
verify,
result: Passed
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
class Solution {
public int solution(int[] A) {
Leader leader = getLeader(A);
if ( leader == null ) { return 0; }
int equileaders = 0, leaderCounter =0, len = A.length;
//System.out.println("v: " + leader.value + ", o:" + leader.ocurrences);
for(int i=0; i < len ; ++i) {
if(A[i] == leader.value) {
++leaderCounter;
if ((leaderCounter > (i/2) && (leader.ocurrences - leaderCounter)>(len-1- i)/2) ) {
++equileaders;
}
}
}
return equileaders;
}
public static class Leader {
int ocurrences;
int value;
public Leader(int value, int ocurrences) {
this.value = value;
this.ocurrences = ocurrences;
}
}
public Leader getLeader(int[] A) {
int indexOfCandidate = -1;
int stackCounter = 0, candidate=-1, value=-1, i =0;
for(int element: A ) {
if (stackCounter == 0) {
value = element;
++stackCounter;
indexOfCandidate = i;
} else {
if (value == element) {
++stackCounter;
} else {
--stackCounter;
}
}
++i;
}
if (stackCounter > 0 ) {
candidate = value;
} else {
return null;
}
int countRepetitions = 0;
for (int element: A) {
if( element == candidate) {
++countRepetitions;
}
}
if(countRepetitions > (A.length / 2)) {
return new Leader(candidate, countRepetitions);
}
return null;
}
}
Analysis
Code: 06:38:40 UTC,
java,
verify,
result: Failed
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
class Solution {
public int solution(int[] A) {
Leader leader = getLeader(A);
if ( leader == null ) { return 0; }
int equileaders = 0, leaderCounter =0, len = A.length;
//System.out.println("v: " + leader.value + ", o:" + leader.ocurrences);
for(int i=0; i < len ; ++i) {
if(A[i] == leader.value) {
++leaderCounter;
if ((leaderCounter > (i+1/2) && (leader.ocurrences - leaderCounter)>(len-1- i)/2) ) {
++equileaders;
}
}
}
return equileaders;
}
public static class Leader {
int ocurrences;
int value;
public Leader(int value, int ocurrences) {
this.value = value;
this.ocurrences = ocurrences;
}
}
public Leader getLeader(int[] A) {
int indexOfCandidate = -1;
int stackCounter = 0, candidate=-1, value=-1, i =0;
for(int element: A ) {
if (stackCounter == 0) {
value = element;
++stackCounter;
indexOfCandidate = i;
} else {
if (value == element) {
++stackCounter;
} else {
--stackCounter;
}
}
++i;
}
if (stackCounter > 0 ) {
candidate = value;
} else {
return null;
}
int countRepetitions = 0;
for (int element: A) {
if( element == candidate) {
++countRepetitions;
}
}
if(countRepetitions > (A.length / 2)) {
return new Leader(candidate, countRepetitions);
}
return null;
}
}
Analysis
expand all
Example tests
1.
1.329 s
WRONG ANSWER,
got 1 expected 2
Code: 06:39:46 UTC,
java,
verify,
result: Failed
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
class Solution {
public int solution(int[] A) {
Leader leader = getLeader(A);
if ( leader == null ) { return 0; }
int equileaders = 0, leaderCounter =0, len = A.length;
//System.out.println("v: " + leader.value + ", o:" + leader.ocurrences);
for(int i=0; i < len ; ++i) {
if(A[i] == leader.value) {
++leaderCounter;
}
if ((leaderCounter > (i+1/2) && (leader.ocurrences - leaderCounter)>(len-1-i)/2) ) {
++equileaders;
}
}
return equileaders;
}
public static class Leader {
int ocurrences;
int value;
public Leader(int value, int ocurrences) {
this.value = value;
this.ocurrences = ocurrences;
}
}
public Leader getLeader(int[] A) {
int indexOfCandidate = -1;
int stackCounter = 0, candidate=-1, value=-1, i =0;
for(int element: A ) {
if (stackCounter == 0) {
value = element;
++stackCounter;
indexOfCandidate = i;
} else {
if (value == element) {
++stackCounter;
} else {
--stackCounter;
}
}
++i;
}
if (stackCounter > 0 ) {
candidate = value;
} else {
return null;
}
int countRepetitions = 0;
for (int element: A) {
if( element == candidate) {
++countRepetitions;
}
}
if(countRepetitions > (A.length / 2)) {
return new Leader(candidate, countRepetitions);
}
return null;
}
}
Analysis
expand all
Example tests
1.
1.319 s
WRONG ANSWER,
got 1 expected 2
Code: 06:41:20 UTC,
java,
verify,
result: Passed
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
class Solution {
public int solution(int[] A) {
Leader leader = getLeader(A);
if ( leader == null ) { return 0; }
int equileaders = 0, leaderCounter =0, len = A.length;
//System.out.println("v: " + leader.value + ", o:" + leader.ocurrences);
for(int i=0; i < len ; ++i) {
if(A[i] == leader.value) {
++leaderCounter;
}
if ((leaderCounter > (i+1)/2 && (leader.ocurrences - leaderCounter)>(len-1-i)/2) ) {
++equileaders;
}
}
return equileaders;
}
public static class Leader {
int ocurrences;
int value;
public Leader(int value, int ocurrences) {
this.value = value;
this.ocurrences = ocurrences;
}
}
public Leader getLeader(int[] A) {
int indexOfCandidate = -1;
int stackCounter = 0, candidate=-1, value=-1, i =0;
for(int element: A ) {
if (stackCounter == 0) {
value = element;
++stackCounter;
indexOfCandidate = i;
} else {
if (value == element) {
++stackCounter;
} else {
--stackCounter;
}
}
++i;
}
if (stackCounter > 0 ) {
candidate = value;
} else {
return null;
}
int countRepetitions = 0;
for (int element: A) {
if( element == candidate) {
++countRepetitions;
}
}
if(countRepetitions > (A.length / 2)) {
return new Leader(candidate, countRepetitions);
}
return null;
}
}
Analysis
Code: 06:42:06 UTC,
java,
verify,
result: Passed
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
class Solution {
public int solution(int[] A) {
Leader leader = getLeader(A);
if ( leader == null ) { return 0; }
int equileaders = 0, leaderCounter =0, len = A.length;
for(int i=0; i < len ; ++i) {
if(A[i] == leader.value) {
++leaderCounter;
}
if ((leaderCounter > (i+1)/2 && (leader.ocurrences - leaderCounter)>(len-1-i)/2) ) {
++equileaders;
}
}
return equileaders;
}
public static class Leader {
int ocurrences;
int value;
public Leader(int value, int ocurrences) {
this.value = value;
this.ocurrences = ocurrences;
}
}
public Leader getLeader(int[] A) {
int indexOfCandidate = -1;
int stackCounter = 0, candidate=-1, value=-1, i =0;
for(int element: A ) {
if (stackCounter == 0) {
value = element;
++stackCounter;
indexOfCandidate = i;
} else {
if (value == element) {
++stackCounter;
} else {
--stackCounter;
}
}
++i;
}
if (stackCounter > 0 ) {
candidate = value;
} else {
return null;
}
int countRepetitions = 0;
for (int element: A) {
if( element == candidate) {
++countRepetitions;
}
}
if(countRepetitions > (A.length / 2)) {
return new Leader(candidate, countRepetitions);
}
return null;
}
}
Analysis
Code: 06:42:11 UTC,
java,
final,
score: 
100
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
class Solution {
public int solution(int[] A) {
Leader leader = getLeader(A);
if ( leader == null ) { return 0; }
int equileaders = 0, leaderCounter =0, len = A.length;
for(int i=0; i < len ; ++i) {
if(A[i] == leader.value) {
++leaderCounter;
}
if ((leaderCounter > (i+1)/2 && (leader.ocurrences - leaderCounter)>(len-1-i)/2) ) {
++equileaders;
}
}
return equileaders;
}
public static class Leader {
int ocurrences;
int value;
public Leader(int value, int ocurrences) {
this.value = value;
this.ocurrences = ocurrences;
}
}
public Leader getLeader(int[] A) {
int indexOfCandidate = -1;
int stackCounter = 0, candidate=-1, value=-1, i =0;
for(int element: A ) {
if (stackCounter == 0) {
value = element;
++stackCounter;
indexOfCandidate = i;
} else {
if (value == element) {
++stackCounter;
} else {
--stackCounter;
}
}
++i;
}
if (stackCounter > 0 ) {
candidate = value;
} else {
return null;
}
int countRepetitions = 0;
for (int element: A) {
if( element == candidate) {
++countRepetitions;
}
}
if(countRepetitions > (A.length / 2)) {
return new Leader(candidate, countRepetitions);
}
return null;
}
}
Analysis summary
The solution obtained perfect score.
Analysis
Detected time complexity:
O(N)
expand all
Correctness tests
1.
1.332 s
OK
2.
1.324 s
OK
3.
1.331 s
OK
1.
1.345 s
OK
2.
1.319 s
OK
3.
1.331 s
OK
1.
1.341 s
OK
2.
1.321 s
OK
1.
1.323 s
OK
1.
1.331 s
OK