栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

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

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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<_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]

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/104813.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号