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 面向对象编程 聊聊对象的事
Sep 17 Javascript
基于jquery实现控制经纬度显示地图与卫星
May 20 Javascript
jQuery UI设置固定日期选择特效代码分享
Aug 27 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
Jan 26 Javascript
Vue 2.0 服务端渲染入门介绍
Mar 29 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
Oct 27 Javascript
JavaScrip关于创建常量的知识点
Dec 07 Javascript
利用Javascript开发一个二维周视图日历
Dec 14 Javascript
详解Angular Forms中自定义ngModel绑定值的方式
Dec 10 Javascript
JS实现数组去重,显示重复元素及个数的方法示例
Jan 21 Javascript
如何解决日期函数new Date()浏览器兼容性问题
Sep 11 Javascript
js实现无缝轮播图效果
Mar 09 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来写记数器(详细介绍)
2006/10/09 PHP
php数组函数序列之array_splice() - 在数组任意位置插入元素
2011/11/07 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
2012/06/27 PHP
php中apc缓存使用示例
2013/12/25 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
2016/03/28 PHP
JS 页面自动加载函数(兼容多浏览器)
2009/05/18 Javascript
javascript与CSS复习(二)
2010/06/29 Javascript
jquery $.ajax()取xml数据的小问题解决方法
2010/11/20 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
2013/06/24 Javascript
JavaScript Math.floor方法(对数值向下取整)
2015/01/09 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
详解Angular.js指令中scope类型的几种特殊情况
2017/02/21 Javascript
Node.js使用gm拼装sprite图片
2017/07/04 Javascript
深入理解jquery的$.extend()、$.fn和$.fn.extend()
2017/07/08 jQuery
JavaScript之创意时钟项目(实例讲解)
2017/10/23 Javascript
Linux Centos7.2下安装nodejs&amp;npm配置全局路径的教程
2018/05/15 NodeJs
浅谈从React渲染流程分析Diff算法
2018/09/08 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
2018/10/15 Javascript
vuex2中使用mapGetters/mapActions报错的解决方法
2018/10/20 Javascript
Vue CLI3基础学习之pages构建多页应用
2019/06/02 Javascript
[01:22:10]Ti4 循环赛第二日 DK vs Empire
2014/07/11 DOTA
跟老齐学Python之让人欢喜让人忧的迭代
2014/10/02 Python
Python selenium使用autoIT上传附件过程详解
2020/05/26 Python
终于搞懂了Keras中multiloss的对应关系介绍
2020/06/22 Python
html5通过postMessage进行跨域通信的方法
2017/12/04 HTML / CSS
深入了解canvas在移动端绘制模糊的问题解决
2019/04/30 HTML / CSS
如何开启linux的ssh服务
2015/02/14 面试题
创业计划书怎样才能打动风投
2014/01/01 职场文书
党员教师一句话承诺
2014/05/30 职场文书
工作年限证明模板
2014/11/01 职场文书
销售辞职信范文
2015/03/02 职场文书
2016春季幼儿园小班开学寄语
2015/12/03 职场文书
学者《孟子》名人名言
2019/08/09 职场文书
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL
nginx之内存池的实现
2022/06/28 Servers
nginx代理实现静态资源访问的示例代码
2022/07/07 Servers