Tasks Details
The submission is being evaluated.
The submission is being evaluated.
easy
1.
Dominator
Find an index of an array such that its value occurs at more than half of indices in the array.
Task Score
100%
Correctness
100%
Performance
100%
An array A consisting of N integers is given. The dominator of array A is the value that occurs in more than half of the elements of A.
For example, consider array A such that
A[0] = 3 A[1] = 4 A[2] = 3 A[3] = 2 A[4] = 3 A[5] = -1 A[6] = 3 A[7] = 3The dominator of A is 3 because it occurs in 5 out of 8 elements of A (namely in those with indices 0, 2, 4, 6 and 7) and 5 is more than a half of 8.
Write a function
function solution(A);
that, given an array A consisting of N integers, returns index of any element of array A in which the dominator of A occurs. The function should return −1 if array A does not have a dominator.
For example, given array A such that
A[0] = 3 A[1] = 4 A[2] = 3 A[3] = 2 A[4] = 3 A[5] = -1 A[6] = 3 A[7] = 3the function may return 0, 2, 4, 6 or 7, as explained above.
Write an efficient algorithm for the following assumptions:
- N is an integer within the range [0..100,000];
- each element of array A is an integer within the range [−2,147,483,648..2,147,483,647].
Copyright 2009–2026 by Codility Limited. All Rights Reserved. Unauthorized copying, publication or disclosure prohibited.
Solution
Programming language used JavaScript
Time spent on task 11 minutes
Notes
not defined yet
Code: 09:39:58 UTC,
java,
autosave
Code: 09:41:35 UTC,
js,
autosave
Code: 09:42:05 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !)
}
}
}
Code: 09:42:24 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
}
}
}
}
Code: 09:42:35 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
}
Code: 09:43:00 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
}
}
Code: 09:43:41 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
cand
}
}
Code: 09:43:51 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
}
Code: 09:44:21 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count
}
Code: 09:44:31 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count = 0;
for ()
}
Code: 09:45:02 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count = 0;
for (let i = 0; i < A.length; i++) {
if (A[i] === candidate) {
count++;
}
}
}
Code: 09:45:32 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count = 0;
for (let i = 0; i < A.length; i++) {
if (A[i] === candidate) {
count++;
}
}
if (count > (A.length / 2.0)) {
lead
}
}
Code: 09:45:42 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count = 0;
for (let i = 0; i < A.length; i++) {
if (A[i] === candidate) {
count++;
}
}
if (count > (A.length / 2.0)) {
leader =
}
}
Code: 09:46:12 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count = 0;
let index =
for (let i = 0; i < A.length; i++) {
if (A[i] === candidate) {
count++;
}
}
if (count > (A.length / 2.0)) {
leader =
}
}
Code: 09:46:42 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count = 0;
let index = null;
for (let i = 0; i < A.length; i++) {
if (A[i] === candidate) {
count++;
if (index === null) {
}
}
if (count > (A.length / 2.0)) {
leader =
}
}
Code: 09:46:53 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count = 0;
let index = null;
for (let i = 0; i < A.length; i++) {
if (A[i] === candidate) {
count++;
if (index === null) {
index = i;
}
}
}
if (count > (A.length / 2.0)) {
leader =
}
}
Code: 09:47:23 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count = 0;
let index = null;
for (let i = 0; i < A.length; i++) {
if (A[i] === candidate) {
count++;
if (index === null) {
index = i;
}
}
}
if (count > (A.length / 2.0)) {
return index;
}
return -1
}
Code: 09:47:54 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
i
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count = 0;
let index = null;
for (let i = 0; i < A.length; i++) {
if (A[i] === candidate) {
count++;
if (index === null) {
index = i;
}
}
}
if (count > (A.length / 2.0)) {
return index;
}
return -1
}
Code: 09:48:05 UTC,
js,
verify,
result: Passed
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count = 0;
let index = null;
for (let i = 0; i < A.length; i++) {
if (A[i] === candidate) {
count++;
if (index === null) {
index = i;
}
}
}
if (count > (A.length / 2.0)) {
return index;
}
return -1
}
The submission is being evaluated.
Code: 09:48:12 UTC,
js,
verify,
result: Passed
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count = 0;
let index = null;
for (let i = 0; i < A.length; i++) {
if (A[i] === candidate) {
count++;
if (index === null) {
index = i;
}
}
}
if (count > (A.length / 2.0)) {
return index;
}
return -1
}
Analysis
expand all
User tests
1.
0.076 s
OK
function result: -1
function result: -1
1.
0.096 s
OK
function result: 0
function result: 0
1.
0.116 s
OK
function result: 1
function result: 1
1.
0.120 s
OK
function result: -1
function result: -1
1.
0.112 s
OK
function result: 0
function result: 0
1.
0.112 s
OK
function result: 1
function result: 1
User test case 1:
[]
User test case 2:
[1]
User test case 3:
[1, 2, 2, 2, 3]
User test case 4:
[1, 2, 2, 2, 3, 4]
User test case 5:
[2147483647, 2147483647, 2147483647]
User test case 6:
[1, -2147483648, 2, 1, -2147483648, -2147483648, -2147483648]
Code: 09:48:19 UTC,
js,
verify,
result: Passed
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count = 0;
let index = null;
for (let i = 0; i < A.length; i++) {
if (A[i] === candidate) {
count++;
if (index === null) {
index = i;
}
}
}
if (count > (A.length / 2.0)) {
return index;
}
return -1
}
Analysis
expand all
User tests
1.
0.068 s
OK
function result: -1
function result: -1
1.
0.068 s
OK
function result: 0
function result: 0
1.
0.068 s
OK
function result: 1
function result: 1
1.
0.072 s
OK
function result: -1
function result: -1
1.
0.068 s
OK
function result: 0
function result: 0
1.
0.068 s
OK
function result: 1
function result: 1
User test case 1:
[]
User test case 2:
[1]
User test case 3:
[1, 2, 2, 2, 3]
User test case 4:
[1, 2, 2, 2, 3, 4]
User test case 5:
[2147483647, 2147483647, 2147483647]
User test case 6:
[1, -2147483648, 2, 1, -2147483648, -2147483648, -2147483648]
Code: 09:48:24 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count = 0;
let index = null;
for (let i = 0; i < A.length; i++) {
if (A[i] === candidate) {
count++;
if (index === null) {
index = i;
}
}
}
if (count > (A.length / 2.0)) {
return index;
}
return -1
}
Code: 09:48:32 UTC,
js,
verify,
result: Passed
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count = 0;
let index = null;
for (let i = 0; i < A.length; i++) {
if (A[i] === candidate) {
count++;
if (index === null) {
index = i;
}
}
}
if (count > (A.length / 2.0)) {
return index;
}
return -1
}
Analysis
User test case 1:
[]
User test case 2:
[1]
User test case 3:
[1, 2, 2, 2, 3]
User test case 4:
[1, 2, 2, 2, 3, 4]
User test case 5:
[2147483647, 2147483647, 2147483647]
Code: 09:48:49 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count = 0;
let index = null;
for (let i = 0; i < A.length; i++) {
if (A[i] === candidate) {
count++;
if (index === null) {
index = i;
}
}
}
if (count > (A.length / 2.0)) {
return index;
}
return -1
}
Code: 09:48:51 UTC,
js,
verify,
result: Passed
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count = 0;
let index = null;
for (let i = 0; i < A.length; i++) {
if (A[i] === candidate) {
count++;
if (index === null) {
index = i;
}
}
}
if (count > (A.length / 2.0)) {
return index;
}
return -1
}
Analysis
expand all
User tests
1.
0.076 s
OK
function result: -1
function result: -1
1.
0.076 s
OK
function result: 0
function result: 0
1.
0.072 s
OK
function result: 1
function result: 1
1.
0.072 s
OK
function result: -1
function result: -1
User test case 1:
[]
User test case 2:
[1]
User test case 3:
[1, 2, 2, 2, 3]
User test case 4:
[1, 2, 2, 2, 3, 4]
Code: 09:49:30 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count = 0;
let index = null;
for (let i = 0; i < A.length; i++) {
if (A[i] === candidate) {
count++;
if (index === null) {
index = i;
}
}
}
if (count > (A.length / 2.0)) {
return index;
}
return -1
}
Code: 09:49:42 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count = 0;
let index = null;
for (let i = 0; i < A.length; i++) {
if (A[i] === candidate) {
count++;
if (index === null) {
index = i;
}
}
}
if (count > (A.length / 2.0)) {
return index;
}
return -1
}
Code: 09:49:47 UTC,
js,
verify,
result: Passed
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count = 0;
let index = null;
for (let i = 0; i < A.length; i++) {
if (A[i] === candidate) {
count++;
if (index === null) {
index = i;
}
}
}
if (count > (A.length / 2.0)) {
return index;
}
return -1
}
Analysis
expand all
User tests
1.
0.068 s
OK
function result: -1
function result: -1
1.
0.072 s
OK
function result: 0
function result: 0
1.
0.072 s
OK
function result: 1
function result: 1
User test case 1:
[]
User test case 2:
[1]
User test case 3:
[1, 2, 2, 2, 3]
Code: 09:50:03 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count = 0;
let index = null;
for (let i = 0; i < A.length; i++) {
if (A[i] === candidate) {
count++;
if (index === null) {
index = i;
}
}
}
if (count > (A.length / 2.0)) {
return index;
}
return -1
}
Code: 09:50:20 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count = 0;
let index = null;
for (let i = 0; i < A.length; i++) {
if (A[i] === candidate) {
count++;
if (index === null) {
index = i;
}
}
}
if (count > (A.length / 2.0)) {
return index;
}
return -1
}
Code: 09:50:24 UTC,
js,
verify,
result: Passed
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count = 0;
let index = null;
for (let i = 0; i < A.length; i++) {
if (A[i] === candidate) {
count++;
if (index === null) {
index = i;
}
}
}
if (count > (A.length / 2.0)) {
return index;
}
return -1
}
Analysis
User test case 1:
[]
User test case 2:
[1]
Code: 09:50:44 UTC,
js,
verify,
result: Passed
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count = 0;
let index = null;
for (let i = 0; i < A.length; i++) {
if (A[i] === candidate) {
count++;
if (index === null) {
index = i;
}
}
}
if (count > (A.length / 2.0)) {
return index;
}
return -1
}
Analysis
User test case 1:
[]
Code: 09:50:47 UTC,
js,
final,
score: 
100
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
let size = 0;
let value = null;
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size++;
value = A[i];
} else {
if (value !== A[i]) {
size--;
} else {
size++;
}
}
}
let candidate = -1;
if (size > 0) {
candidate = value;
}
let leader = -1;
let count = 0;
let index = null;
for (let i = 0; i < A.length; i++) {
if (A[i] === candidate) {
count++;
if (index === null) {
index = i;
}
}
}
if (count > (A.length / 2.0)) {
return index;
}
return -1
}
The submission is being evaluated.