源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-06-05 02:27 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:JavaScript实现列出数组中最长的连续数
原始题目: 给定一个无序的整数序列, 找最长的连续数字序列。 例如: 给定[100, 4, 200, 1, 3, 2], 最长的连续数字序列是[1, 2, 3, 4]。 小菜给出的解法:
[u]复制代码[/u] 代码如下:
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。      返回值:          此方法不会改变传入的数组,会返回一个包含最大序列的新数组。      调用示例: [b]         maxSequence([5,7,2,4,0,3,9],1);  //return [2,3,4,5][/b] [b]         maxSequence([5,7,2,4,0,3,9],2);  //return [5,7,9] [/b]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部