Показать сообщение отдельно
  #53 (permalink)  
Старый 04.08.2018, 10:53
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Вот так проскочило:
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 раз добавлять новые индексы, то массив меняет свой размер (меняются внутренние свойства, что приводит к очень долгому вычислению и изменению внутреннего состояния массива)
Ответить с цитированием