Интересный алгоритм, но реализация хромает.
const arr = [1, 2, 23, 23, 23, 0, 4, 2, 11, 4, 3, 3, 3, 3, 23, 23]
Вот кейс, который ломает работу алгоритма. Если максимальное число в массиве имеет больше всего повторений, а ранее в массиве встречалось число с на 1 меньшим количеством повторений, то усё.
Причина в этом:
while(i < arrSort.length-1)
Почему ты решила, что выходить из цикла на предпоследнем элементе хорошая идея, мне решительно непонятно.
Помимо этого есть ещё ряд проблем, которые влияют лишь на качество кода:
let arrSort = arr.sort((a,b)=> a < b ? -1 : 1)
Во-первых, сорт работает на месте. Во-вторых, что это за извращение в калбеке?
arr.sort((a, b) => a - b)
let numberNext = 1;
let i = 0;
С чего вдруг первое равно единице, а второе нулю? При первой же паре значений numberNext окажется меньше i, он банально не на каждой итерации увеличивает своё значение, в отличии от i.
while(i < arrSort.length)
По какой причине тут используется вайл, когда тут всё для фора заточено?
;
let numberNext = 0;
let number = arr[0];
for(let i = 1; i < arr.length; i++) {
if(arr[i] === arr[numberNext]) {
number = arr[numberNext];
continue;
}
numberNext++;
}
numberNext+=1
i++
Ты уже определись какой вариант ты будешь использовать.
И последнее, аллергия на
;
?)