JavaScript实现列出数组中最长的连续数
作者:bea
原始题目: 给定一个无序的整数序列, 找最长的连续数字序列。 例如: 给定[100, 4, 200, 1, 3, 2], 最长的连续数字序列是[1, 2, 3, 4]。 小菜给出的解法: 代码如下: function maxSequence(array,step){ var _array = array.slice(), //clone array _step = 1, _arrayTemp = [], i = 0; var parseLogic =
原始题目:
给定一个无序的整数序列, 找最长的连续数字序列。
例如:
给定[100, 4, 200, 1, 3, 2],
最长的连续数字序列是[1, 2, 3, 4]。
小菜给出的解法:
代码如下:
function maxSequence(array,step){
var _array = array.slice(), //clone array
_step = 1,
_arrayTemp = [],
i = 0;
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。
返回值:
此方法不会改变传入的数组,会返回一个包含最大序列的新数组。
调用示例:
maxSequence([5,7,2,4,0,3,9],1); //return [2,3,4,5]
maxSequence([5,7,2,4,0,3,9],2); //return [5,7,9]
有用 | 无用
给定一个无序的整数序列, 找最长的连续数字序列。
例如:
给定[100, 4, 200, 1, 3, 2],
最长的连续数字序列是[1, 2, 3, 4]。
小菜给出的解法:
代码如下:
function maxSequence(array,step){
var _array = array.slice(), //clone array
_step = 1,
_arrayTemp = [],
i = 0;
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。
返回值:
此方法不会改变传入的数组,会返回一个包含最大序列的新数组。
调用示例:
maxSequence([5,7,2,4,0,3,9],1); //return [2,3,4,5]
maxSequence([5,7,2,4,0,3,9],2); //return [5,7,9]
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- JavaScript中检查对象property的存在性方法介绍
- JavaScript中遍历对象的property的3种方法介绍
- JavaScript语言对Unicode字符集的支持详解
- JavaScript中的对象的extensible属性介绍
- JavaScript中的对象序列化介绍
- JavaScript中的数组特性介绍
- JavaScript中数组成员的添加、删除介绍
- JavaScript 实现打印,打印预览,打印设置
- JavaScript中的数组操作介绍
- jQuery中:first选择器用法实例
- JavaScript中的类数组对象介绍
- JavaScript中的方法调用详细介绍
- JavaScript中的闭包(Closure)详细介绍
- JavaScript中的类(Class)详细介绍
- JavaScript实现防止网页被嵌入Frame框架的代码分享
- jQuery实现ichat在线客服插件
- jQuery中用dom操作替代正则表达式
- jQuery中:animated选择器用法实例
- 纯JavaScript实现获取onclick、onchange等事件的值