Оригинальное название:
Учитывая неупорядоченную последовательность целых чисел, найдите самую длинную последовательность последовательных чисел.
Например:
Дано [100, 4, 200, 1, 3, 2],
Самая длинная последовательность последовательных чисел - [1, 2, 3, 4].
Решение, данное Xiaocai:
Кода -копия выглядит следующим образом:
Функция max sequence (массив, шаг) {
var _array = array.slice (), // массив клонов
_step = 1,
_arrayTemp = [],
i = 0;
var parselogic = {
// Результат контейнер
проанализии: [],
// Установить значение на массив, каков последний массив анализаторов
SET: FUNCTION (N) {
this.parseresults [this.parseresults.length-1] .push (n);
},
// Получить последний массив от анализаторов
get: function () {
вернуть это.parseresults [this.parseresults.length-1];
},
// Поместите новый массив в анализации
Additem: function () {
this.parseresults.push ([]);
},
// Сортировать анализаторы
sortbyasc: function () {
this.parseresults.sort (function (a, b) {
возврат A.Length - B.Length;
});
}
};
// Проверьте параметры
_step = step || _шаг;
// сортировка массива от ASC
_array.sort (function (a, b) {
вернуть A - B;
});
// Удалить повторение данных
for (i = 0; i <_array.length; i ++) {
if (_array [i]! = _array [i+1]) {
_arraytemp.push (_array [i]);
}
}
_array = _arraytemp.slice ();
_arrayTemp = [];
// Parse Array
parselogic.additem ();
for (i = 0; i <_array.length; i ++) {
if (_array [i]+_ step == _array [i+1]) {
parselogic.set (_array [i]);
продолжать;
}
if (_array [i] -_ step == _array [i-1]) {
parselogic.set (_array [i]);
parselogic.additem ();
}
}
// Сортировать результат
parselogic.sortbyasc ();
// Получить максимальную последовательность
вернуть parselogic.get ();
}
Инструкции по телефону:
Название метода:
максимальная последовательность (массив, шаг)
Описание параметра:
Массив: массив, который можно найти. необходимый.
Шаг: шаг последовательности (приращение). Необязательно, по умолчанию 1.
Возвращаемое значение:
Этот метод не изменяет входящий массив и возвращает новый массив, содержащий самую большую последовательность.
Пример звонка:
максимальная последовательность ([5,7,2,4,0,3,9], 1); // Возврат [2,3,4,5]
максимальная последовательность ([5,7,2,4,0,3,9], 2); // Возврат [5,7,9]