Помогите решить задачу с собеса
Нужно написать функцию. На вход поступает массив чисел. Числа больше либо равны 0 и не повторяются.
Если числа из исходного массива (не обязательно идущие по порядку)образуют непрерывную числовую последовательность, то следует их добавить в результат по паттерну 'Начало последовательности - Конец последовательности'. Если число не входит в последовательность, то добавить его в результат через запятую.
Алгоритмическая сложность должна быть не выше O(n log n)
Пример: Параметр: [9, 0, 6, 8, 2, 5, 4] Возвращаемый результат: '0, 2, 4-6, 8-9'
PS: код ниже добавил, но он не работает по понятным причинам. Вопрос скорее к алгоритму, не могу понять каким методом решить. SOS
const testFunc = (nums) => {
let range = [];
let res = "";
const sortNums = nums.sort((a, b) => a - b);
for (let i = 0; i < sortNums.length; i++) {
if (sortNums[i] + 1 === sortNums[i + 1]) {
range.push(sortNums[i]);
}
res += `${range[0]}-${range[-1]},`;
range = [];
res += `${sortNums[i]},`;
}
return res;
};
console.log(testFunc([9, 0, 6, 8, 2, 5, 4]))
Источник: Stack Overflow на русском