JavaScript实现找出数组中最长的连续数字序列

前端之家收集整理的这篇文章主要介绍了JavaScript实现找出数组中最长的连续数字序列前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

原始题目:

给定一个无序的整数序列, 找最长的连续数字序列。

例如:

给定[100,4,200,1,3,2],

最长的连续数字序列是[1,2,4]。

小菜给出的解法:

var parseLogic = {
//result container
parseResults: [],//set value to array,what's the last array of parseResults
set: function(n){
this.parseResults[this.parseResults.length-1].push(n);
},//get the last array from parseResults
get: function(){
return this.parseResults[this.parseResults.length-1];
},//put a new array in parseResults
addItem: function(){
this.parseResults.push([]);
},//sort parseResults
sortByAsc: function(){
this.parseResults.sort(function(a,b){
return a.length - b.length;
});
}
};

//check params
_step = step || _step;

//sort array by asc
_array.sort(function(a,b){
return a - b;
});

//remove repeat of data
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]);
continue;
}
if(_array[i]-_step == _array[i-1]){
parseLogic.set(_array[i]);
parseLogic.addItem();
}
}

//sort result
parseLogic.sortByAsc();

//get the max sequence
return parseLogic.get();

}

调用说明:

方法名称

maxSequence(array,step)

参数说明:

array:要查找的数组。必要。

step:序列步长(增量)。可选,默认为1。

返回值:

方法不会改变传入的数组,会返回一个包含最大序列的新数组。

调用示例:

猜你在找的JavaScript相关文章