Мне нужно найти n-е наименьшее целое число (n
) в массиве (arr
).Это задание на Codewars, поэтому, если кто-то может помочь мне с подсказками, а не с решением, будет очень признателен.Код, который я написал, работает отлично, но время ожидания при обработке огромных списков (из 1 миллиона элементов), поэтому я должен повысить его эффективность.Я использовал while вместо for, и я изменил for с увеличения на уменьшение без заметной разницы.Я не впервые борюсь с эффективностью кода на Codewars, поэтому мне бы очень хотелось узнать, как с этим справиться.Это ката https://www.codewars.com/kata/the-nth-smallest-integer/train/javascript, спасибо за помощь!
function nthSmallest(arr, n) {
var b = [];
var len = arr.length
for (var i = 0; i < len; i++) {
if (b.indexOf(arr[i]) === -1) {
b.push(arr[i]);
}
}
if (n > b.length) {
return -1;
}
return b.sort(function(a, b) {return a - b;})[n - 1];
}
nthSmallest([455555, 455555, 2222222, 2222223, 3333333, 9879799,
79977979, 79977979, 79977979, 79977979,79977979,
79977979, 79977979,79977979,],3); // returns '2222223', the 3rd smallest integer