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 8
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