Javascript实现列出数组中最长的连续数字。
给定一个无序的整数序列,找到最长连续的数字序列。
例如:
给定{ 100, 4, 200,1, 3, 2 },
最长连续数字序列是{ 1, 2, 3和4 }。
小碟子给的解决办法:
复制代码代码如下所示:
功能maxsequence(阵列、步){
无功_array = array.slice(), / /克隆阵列
_step = 1,
_arraytemp = { },
我= 0;
无功parselogic = { {
结果容器
parseresults:{ },
/ /设定值的数组,parseresults最后阵列是什么
集合:函数(n){
这个parseresults { }。parseresults。length-1推(N);
},
/ /获得parseresults最后阵列
获取:函数(){
退货。parseresults {这。parseresults length-1 };
},
/ /把一个新的阵列parseresults
AddItem:函数(){
This.parseResults.push({ });
},
/ /排序parseresults
SortByAsc:函数(){
This.parseResults.sort(功能(A,B){
返回a.length - b.length;
});
}
};
/ /检查参数
_step =步_step | |;
排序数组
_array.sort(功能(A,B){
返回一个B;
});
删除数据重复
为(i = 0;i < _array.length;i++){
如果(_array {我}!= _array {我+ 1 }){
_arraytemp.push(_array {我});
}
}
_array = _arraytemp.slice();
_arraytemp = { };
解析数组
ParseLogic.addItem();
为(i = 0;i < _array.length;i++){
如果(_array {我} + _step = = _array {我+ 1 }){
parselogic.set(_array {我});
继续;
}
如果(_array {我} - _step = = _array {·}){
parselogic.set(_array {我});
ParseLogic.addItem();
}
}
排序结果
ParseLogic.sortByAsc();
获取最大序列
返回parselogic.get();
}
呼叫描述:
方法名称:
maxsequence(数组的步骤)
参数描述:
数组:您要查找的数组。这是必要的。
步骤:序列步长(增量)。可选,默认值为1。
返回值:
此方法不更改传入数组,并返回包含最大序列的新数组。
举例子:
MaxSequence({ 5,7,2,4,0,3,9 },1); / /回报{五}
MaxSequence({ 5,7,2,4,0,3,9 },2); / /回报{ 5,7,9 }