Как стать автором
Обновить
0
0

Пользователь

Отправить сообщение
У вас получилось так же тяжелое решение. Метод .shift() занимает O(N), т.е. удаляет первый элемент и все остальные сдвигает на -1 позицию. И того, если у вас M нечетных чисел, в итерации arr.map(...) (K — всего чисел), сложность будет O(M*K), что, при тесте, где все числа нечетные, выйдет O(K^2) (так как M === K). В некоторые компании, такие решения не принимаются(
Чтоб это исправить, достаточно создать указатель элементы в odd_sorted:
function oddSort(arr) {
//отобрать только нечетные и отсортировать
    odd_sorted = arr.filter((x)=> x%2==1 ).sort((a,b)=>a-b);
//вставить их на нечетные места
   let i = 0; // увеличиваем его каждый раз, после вставки нечетных в массив
    return arr.map(item => {
        return (item%2 != 0)? odd_sorted[i++] : item;
    });   
}

что даст сложность O(2K + MlogM) (уже не квадрат)

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность