Как оптимизировать функцию?
Есть задачка https://www.codewars.com/kata/56a1c63f3bc6827e13000006
Условие:
Напсиать ф-ию smaller, который на вход принимает массив, и для каждого элемента входного массива определяет, сколько элементов в данном массиве, которые находятся справа, меньше его. Ответ должен быть в виде массива, где ответы в том же порядке что и элементы входного массива
Тест-кейсы:
console.log(smaller([5, 4, 3, 2, 1])); // [4, 3, 2, 1, 0]
console.log(smaller([1, 2, 0])); // [1, 1, 0]
При вызове функции в качестве параметра используеться массив длинной 30000+- элементов и из-за этого код выдает ошибку Execution Timed Out (12000 ms), как бы код рабочий, но недостаточно оптимизирован, как это можно исправить?
Вот мой код:
function smaller(arr) {
let length = arr.length;
let tempArr = arr;
for (let i = 0; i < length; i++) {
tempArr = tempArr.slice(1);
let count = 0;
for (let j = 0; j < tempArr.length; j++) {
tempArr[j] < arr[i] ? count++ : 0;
}
arr[i] = count;
}
return arr;
}
console.log(smaller([5, 4, 3, 2, 1]));
console.log(smaller([1, 2, 0]));