N указано, или это максимальный элемент в массиве?
|
Alexandroppolus,
н не указано, длинна максимальная до 30.000.000 есть метка 1 <= кол-во пропущенных <= 10 но встречалось и больше почему-то. :( |
Вот так проскочило:
function missNumsFinder(arr) {
const present = new Array(arr.length), result = [];
for(let i = 0, { length } = arr; i < length; ) {
present[arr[i++]] = true;
}
for(let i = 1, { length } = present; ; ) {
while(i in present) i++;
if(i >= length) break;
result.push(i++);
}
return result;
}
Изначально у меня было const present = [], result = [];Но если там около 30000000 раз добавлять новые индексы, то массив меняет свой размер (меняются внутренние свойства, что приводит к очень долгому вычислению и изменению внутреннего состояния массива) |
Malleys,
так не проходит, до 30.000.000 там 2 теста, это решение крайне редко успевает первый выполнить. эта ката (Hardcore version) м.б. вы решали без этой метки? |
Malleys,
а вот, Вижу, у вас прокатило. а с какой попытки? |
Когда было `const present = [], result = [];`, то всегда не хватало времени, когда поменял на `const present = new Array(arr.length), result = [];`, то через один-пару раз проходит, иногда много раз не проходит, иногда больше проходит, чем не проходит...
|
Malleys,
:) |
Может, попробовать Uint8Array ?
|
Alexandroppolus,
есть такая тема :) |
рони,
ваше решение будет стабильно проходить если: for (var c = Array(b.length).fill(0), a = 0; a < b.length; a++) c[b[a]] = true; без .fill(0) борода! вот такой парадокс |
| Часовой пояс GMT +3, время: 10:22. |