Задача выборов кандидатов
У нас есть массив А = [x1, x2, x3, ... k], где находятся количество собранных голосов каждого кандидата . Последный элемент массива k показывает число тех людей которые еще не голосавали. Нужно найти при данном k количестве сколько кандидатов имеет шанс победить. Нужно заметить что если для разных кандидатах количество самых высоких результатов одинаковы, означает что победивших нет. Например в случае А = [2, 3, 5, 2, 3] шансы на победу будут иметь две кандидати А[1] и А[2]. Надо написать функцию которая получает массив А и возвращает количество кандидатов которые имеют шанс на победу.
function solution(v, k) {
k = v[v.length - 1]
v.sort((a, b) => b - a);
if (k === 0) {
return (v[0] == v[1]) ? 0 : 1;
}
if (k != 0) {
let greatestValue = v[0];
let count = 0;
v.reverse();
for (let x = 0; x != v.length; x++) {
if ((v[x] + k) > greatestValue) count++;
}
return count - 1;
}
}
console.log(solution([2, 3, 5, 2, 3])); // 2
console.log(solution([1, 3, 3, 1, 1, 0])); // 0
console.log(solution([5, 1, 3, 4, 1, 0])); // 1
console.log(solution([1, 1, 1, 1, 1])); // 4
console.log(solution([1, 1, 1, 1, 0])); // 0
console.log(solution([3, 1, 1, 3, 1, 2])); // 2
console.log(solution([2, 3, 1, 1])); // получается 0 но должен получатся 1
console.log(solution([2, 3, 4, 8, 6, 1, 7])) // 5
console.log(solution([5, 5, 5, 0])) // 0
console.log(solution([1, 2, 3, 4, 2])) // получается 1 но должен получатся 2
Поможете найти ошибку и правильно решить задачу?
Ответы (1 шт):
Автор решения: moxolim
→ Ссылка
function solution(v, k) {
k = v.pop();
v.sort((a, b) => b - a);
if (k === 0) {
return (v[0] == v[1]) ? 0 : 1;
}
if (k != 0) {
let greatestValue = v[0];
let count = 0;
v.reverse();
for (let x = 0; x != v.length; x++) {
if ((v[x] + k) > greatestValue) count++;
}
return count;
}
}
console.log(solution([2, 3, 5, 2, 3]));
console.log(solution([1, 3, 3, 1, 1, 0]));
console.log(solution([5, 1, 3, 4, 1, 0]));
console.log(solution([1, 1, 1, 1, 1]));
console.log(solution([1, 1, 1, 1, 0]));
console.log(solution([3, 1, 1, 3, 1, 2]));
console.log(solution([2, 3, 1, 1]));
console.log(solution([2, 3, 4, 8, 6, 1, 7]));
console.log(solution([5, 5, 5, 0]));
console.log(solution([1, 2, 3, 4, 2]));