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


Posted in Javascript onDecember 29, 2014

原始题目:

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

例如:

给定[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 相关文章推荐
求解开jscript.encode代码的asp函数
Feb 28 Javascript
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
Mar 07 Javascript
ExtJS Store的数据访问与更新问题
Apr 28 Javascript
网站页面自动跳转实现方法PHP、JSP(下)
Aug 01 Javascript
JavaScript中获取鼠标位置相关属性总结
Oct 11 Javascript
用队列模拟jquery的动画算法实例
Jan 20 Javascript
jquery实现的横向二级导航效果代码
Aug 26 Javascript
深入理解JS中的Function.prototype.bind()方法
Oct 11 Javascript
AngularJS实现路由实例
Feb 12 Javascript
基于JavaScript实现的顺序查找算法示例
Apr 14 Javascript
三步实现ionic3点击退出app程序
Sep 17 Javascript
深入理解Vue的数据响应式
May 15 Vue.js
jQuery中document与window以及load与ready 区别详解
Dec 29 #Javascript
jQuery中:header选择器用法实例
Dec 29 #Javascript
JavaScript实现查找字符串中第一个不重复的字符
Dec 29 #Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
Dec 29 #Javascript
JavaScript中的数学运算介绍
Dec 29 #Javascript
jQuery中:lt选择器用法实例
Dec 29 #Javascript
JavaScript中的数值范围介绍
Dec 29 #Javascript
You might like
德生PL330的评价与改造
2021/03/02 无线电
浅析php header 跳转
2013/06/17 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
2015/08/01 PHP
PHP弱类型语言中类型判断操作实例详解
2017/08/10 PHP
JS 无限级 Select效果实现代码(json格式)
2011/08/30 Javascript
Javascript 实现的数独解题算法网页实例
2013/10/15 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
JS获取时间的方法
2015/01/21 Javascript
JavaScript实现拖拽网页内元素的方法
2015/04/15 Javascript
JavaScript实现表格点击排序的方法
2015/05/11 Javascript
谈谈AngularJs中的隐藏和显示
2015/12/09 Javascript
angularjs2中父子组件的数据传递的实例代码
2017/07/05 Javascript
js实现会跳动的日历效果(完整实例)
2017/10/18 Javascript
JS遍历DOM文档树的方法实例详解
2018/04/03 Javascript
node.js连接mysql与基本用法示例
2019/01/05 Javascript
[20:46]Ti4循环赛第三日VG vs DK
2014/07/12 DOTA
[43:48]Ti4正赛第一天 VG vs NEWBEE 2
2014/07/19 DOTA
python实现巡检系统(solaris)示例
2014/04/02 Python
Python类方法__init__和__del__构造、析构过程分析
2015/03/06 Python
Python基于Tkinter的HelloWorld入门实例
2015/06/17 Python
Python应用03 使用PyQT制作视频播放器实例
2016/12/07 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
2019/06/27 Python
40个你可能不知道的Python技巧附代码
2020/01/29 Python
python3中sys.argv的实例用法
2020/04/24 Python
基于python计算并显示日间、星期客流高峰
2020/05/07 Python
New Balance英国官方网站:始于1906年,百年慢跑品牌
2016/12/07 全球购物
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
财务总经理岗位职责
2014/02/16 职场文书
机械设计专业大学生职业生涯规划书范文
2014/09/13 职场文书
留学推荐信英文范文
2015/03/26 职场文书
毕业生捐书活动倡议书
2015/04/27 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
《观潮》教学反思
2016/02/17 职场文书
护理自荐信
2019/05/14 职场文书
Vue通过懒加载提升页面响应速度
2021/05/10 Vue.js
忆童年!用Python实现愤怒的小鸟游戏
2021/06/07 Python