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 相关文章推荐
Javascript 继承机制实例
Aug 12 Javascript
JavaScript版TAB选项卡效果实例
Aug 16 Javascript
实例分析javascript中的call()和apply()方法
Nov 28 Javascript
详解JavaScript的策略模式编程
Jun 24 Javascript
js中遍历Map对象的简单实例
Aug 08 Javascript
详解Node.Js如何处理post数据
Sep 19 Javascript
JS验证input输入框(字母,数字,符号,中文)
Mar 23 Javascript
easyui简介_动力节点Java学院整理
Jul 14 Javascript
原生javascript实现连连看游戏
Jan 03 Javascript
javascript用defineProperty实现简单的双向绑定方法
Apr 03 Javascript
Vue项目接入Paypal实现示例详解
Jun 04 Javascript
js前端图片加载异常兜底方案
Jun 21 Javascript
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
php实现首页链接查询 友情链接检查的代码
2010/01/05 PHP
php权重计算方法代码分享
2014/01/09 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
用倒置滤镜把div倒置,再把table倒置。
2007/07/31 Javascript
不要在cookie中使用特殊字符的原因分析
2010/07/13 Javascript
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
2013/04/02 Javascript
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
如何判断元素是否为HTMLElement元素
2013/12/06 Javascript
jquery ajax,ashx,json的用法总结
2014/02/12 Javascript
JavaScript中var关键字的使用详解
2015/08/14 Javascript
jQuery实现的指纹扫描效果实例(附演示与demo源码下载)
2016/01/26 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
2017/10/26 Javascript
react实现点击选中的li高亮的示例代码
2018/05/24 Javascript
Node错误处理笔记之挖坑系列教程
2018/06/05 Javascript
jquery.pager.js实现分页效果
2019/07/29 jQuery
Vue登录主页动态背景短视频制作
2019/09/21 Javascript
nodejs中使用worker_threads来创建新的线程的方法
2021/01/22 NodeJs
[48:26]VGJ.S vs infamous Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
[01:04:05]VG vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
浅谈Python中的数据类型
2015/05/05 Python
Python正则表达式分组概念与用法详解
2017/06/24 Python
Django中使用celery完成异步任务的示例代码
2018/01/23 Python
小白如何入门Python? 制作一个网站为例
2018/03/06 Python
浅谈关于Python3中venv虚拟环境
2018/08/01 Python
Python面向对象之反射/自省机制实例分析
2018/08/24 Python
Python面向对象之接口、抽象类与多态详解
2018/08/27 Python
python下载库的步骤方法
2019/10/12 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
公司副总经理任命书
2014/06/05 职场文书
关于读书的活动方案
2014/08/14 职场文书
创先争优活动承诺书
2014/08/30 职场文书
2014教师党员个人自我评议
2014/09/20 职场文书
学雷锋日活动总结
2015/02/06 职场文书
离婚案件被告代理词
2015/05/23 职场文书
中学政教处工作总结
2015/08/13 职场文书
爱国主义教育主题班会
2015/08/13 职场文书