php取数组中连续数,JavaScript实现列出数组中最长的连续数_javascript技巧

原始题目:

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

例如:

给定[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

if(_array[i] != _array[i+1]){

_arrayTemp.push(_array[i]);

}

}

_array = _arrayTemp.slice();

_arrayTemp = [];

//parse array

parseLogic.addItem();

for(i = 0;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]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值