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 相关文章推荐
HTML代码中标签的全部属性 中文注释说明
Mar 26 Javascript
写出更好的JavaScript之undefined篇(上)
Nov 22 Javascript
Jquery中Ajax 缓存带来的影响的解决方法
May 19 Javascript
jQuery实现contains方法不区分大小写的方法
Feb 13 Javascript
JS给Textarea文本框添加行号的方法
Aug 20 Javascript
jqTransform美化表单
Oct 10 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
Dec 15 Javascript
@ResponseBody 和 @RequestBody 注解的区别
Mar 08 Javascript
详谈ES6中的迭代器(Iterator)和生成器(Generator)
Jul 31 Javascript
JSON生成Form表单的方法示例
Nov 21 Javascript
js实现点赞效果
Mar 16 Javascript
Vue axios获取token临时令牌封装案例
Sep 11 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
实现了一个PHP5的getter/setter基类的代码
2007/02/25 PHP
PHP CodeBase:将时间显示为&quot;刚刚&quot;&quot;n分钟/小时前&quot;的方法详解
2013/06/06 PHP
smarty基础之拼接字符串的详解
2013/06/18 PHP
关于PHP定时发送服务的解决办法
2017/04/23 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
比较新旧两个数组值得增加和删除的JS代码
2013/10/30 Javascript
js数组方法扩展实现数组统计函数
2014/04/09 Javascript
用C/C++来实现 Node.js 的模块(二)
2014/09/24 Javascript
JavaScript判断数组是否包含指定元素的方法
2015/07/01 Javascript
JavaScript框架Angular和React深度对比
2017/11/20 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
2018/01/11 Javascript
对 Vue-Router 进行单元测试的方法
2018/11/05 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
2019/05/31 Javascript
layer.open组件获取弹出层页面变量、函数的实例
2019/09/25 Javascript
vue cli3 配置proxy代理无效的解决
2019/10/30 Javascript
javaScript中indexOf用法技巧
2019/11/26 Javascript
将Vue组件库更换为按需加载的方法步骤
2020/05/06 Javascript
JavaScript交换变量的常用方法小结【4种方法】
2020/05/07 Javascript
js实现无刷新监听URL的变化示例代码详解
2020/06/03 Javascript
如何在 ant 的table中实现图片的渲染操作
2020/10/28 Javascript
[52:41]OG vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/20 DOTA
Python自定义scrapy中间模块避免重复采集的方法
2015/04/07 Python
Python本地与全局命名空间用法实例
2015/06/16 Python
Python类装饰器实现方法详解
2018/12/21 Python
python2.7 安装pip的方法步骤(管用)
2019/05/05 Python
详解程序意外中断自动重启shell脚本(以Python为例)
2019/07/26 Python
Python matplotlib实时画图案例
2020/04/23 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
python中翻译功能translate模块实现方法
2020/12/17 Python
美国知名保健品网站:LuckyVitamin(支持中文)
2017/08/09 全球购物
税务职业生涯规划书范文
2014/09/16 职场文书
驳回起诉民事裁定书
2015/05/19 职场文书
鲁滨逊漂流记读书笔记
2015/06/26 职场文书
严以用权学习心得体会
2016/01/12 职场文书
win10如何更改appdata文件夹的默认位置?
2022/07/15 数码科技
ubuntu如何搭建vsftpd服务器
2022/12/24 Servers