手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >JavaScript实现找出数组中最长的连续数字序列
JavaScript实现找出数组中最长的连续数字序列
摘要:原始题目:给定一个无序的整数序列,找最长的连续数字序列。例如:给定[100,4,200,1,3,2],最长的连续数字序列是[1,2,3,4]...

原始题目:

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

例如:

给定[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实现找出数组中最长的连续数字序列】相关文章:

Javascript实现div层渐隐效果的方法

javascript实现table选中的行以指定颜色高亮显示

JavaScript中的函数嵌套使用

JavaScript实现鼠标滑过处生成气泡的方法

javascript实现十秒钟后注册按钮可点击的方法

JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法

JavaScript对表格或元素按文本,数字或日期排序的方法

javascript实现图片跟随鼠标移动效果的方法

javascript实现youku的视频代码自适应宽度

基于JavaScript实现动态添加删除表格的行

精品推荐
分类导航