Как оптимизировать функцию?

Есть задачка 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]));


Ответы (0 шт):