Skip to content

Instantly share code, notes, and snippets.

@xfenix
Last active December 12, 2018 00:05
Show Gist options
  • Save xfenix/6af0ac238114d384000d86fbcb4c6b5a to your computer and use it in GitHub Desktop.
Save xfenix/6af0ac238114d384000d86fbcb4c6b5a to your computer and use it in GitHub Desktop.
/**
* Функция missing(), которая принимает неотсортированный массив уникальных
* чисел (то есть, числа в нём не повторяются) от 1 до некоего числа n, и возвращает число,
* отсутствующее в последовательности. Там может быть либо одно отсутствующее число,
* либо их может не быть вовсе. Сложность O(n)
*/
function missing(seq) {
max_item = Math.max(...seq);
actual_summ = seq.reduce((acc, val) => acc + val, 0);
arithm_summ = (1 + max_item)*max_item/2;
diff = arithm_summ - actual_summ;
return diff && isFinite(diff) ? diff : undefined;
}
console.assert(missing([]) === undefined, "1");
console.assert(missing([1, 4, 3]) === 2, "2");
console.assert(missing([2, 3, 4]) === 1, "3");
console.assert(missing([5, 1, 4, 2]) === 3, "4");
console.assert(missing([1, 2, 3, 4]) === undefined, "5");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment