Skip to content

Instantly share code, notes, and snippets.

@KolosovAO
Last active June 12, 2018 14:55
Show Gist options
  • Save KolosovAO/e1924d1e05dcdaa5eaa864f30b56fda3 to your computer and use it in GitHub Desktop.
Save KolosovAO/e1924d1e05dcdaa5eaa864f30b56fda3 to your computer and use it in GitHub Desktop.
/*
    Создается словарь в котором, ключом будет значение элемента массива, а значением количество вхождений.
    Если значение в словаре на какой-либо из итераций больше N/2, то возвращается текущий элемент.
    Если по окончании итераций мажоритарный элемент не найден - выбрасывается сообщение об ошибке.
*/

function solve(arr) {
    const majoritarCount = Math.floor(arr.length / 2);
    const dict = {};

    for (let i=0; i<arr.length; i++) {
        const v = arr[i];
        dict[v] = (dict[v] || 0) + 1;

        if (dict[v] > majoritarCount) {
            return v;
        }
    }
    throw new Error("majoritar element not found");
}

console.log(solve([1, 2, 3, 4, 1, 1, 1]));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment