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控制上传文件的大小
Oct 26 Javascript
用JavaScript编写COM组件的步骤
Mar 17 Javascript
判断多个input type=file是否有已经选择好文件的代码
May 23 Javascript
ko knockoutjs动态属性绑定技巧应用
Nov 14 Javascript
深入分析JSONP跨域的原理
Dec 10 Javascript
微信小程序开发之录音机 音频播放 动画实例 (真机可用)
Dec 08 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
Mar 05 Javascript
Vue 源码分析之 Observer实现过程
Mar 29 Javascript
Web安全之XSS攻击与防御小结
Dec 13 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
Jan 20 Javascript
jquery实现Ajax请求的几种常见方式总结
May 28 jQuery
微信小程序地图实现展示线路
Jul 29 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
oracle资料库函式库
2006/10/09 PHP
php empty,isset,is_null判断比较(差异与异同)
2010/10/19 PHP
点图片上一页下一页翻页效果
2008/07/09 Javascript
Javascript读取cookie函数代码
2010/10/16 Javascript
javascript 兼容所有浏览器的DOM扩展功能
2012/08/01 Javascript
JavaScript打印iframe内容示例代码
2013/08/20 Javascript
JavaScript使用Math.Min返回两个数中较小数的方法
2015/04/06 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
2016/08/03 Javascript
手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果
2016/08/25 Javascript
微信小程序 template模板详解及实例
2017/02/21 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
2017/03/31 Javascript
bootstrap模态框示例代码分享
2017/05/17 Javascript
JS中移除非数字最多保留一位小数
2018/05/09 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
2018/07/26 Javascript
vue2.0项目集成Cesium的实现方法
2019/07/30 Javascript
websocket4.0+typescript 实现热更新的方法
2019/08/14 Javascript
NodeJs crypto加密制作token的实现代码
2019/11/15 NodeJs
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[01:19:46]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
python利用hook技术破解https的实例代码
2013/03/25 Python
python中查看变量内存地址的方法
2015/05/05 Python
Python 3.x 新特性及10大变化
2015/06/12 Python
用python写的一个wordpress的采集程序
2016/02/27 Python
Python爬虫实例扒取2345天气预报
2018/03/04 Python
python tornado修改log输出方式
2019/11/18 Python
Python3之外部文件调用Django程序操作model等文件实现方式
2020/04/07 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
Alpine安装Python3依赖出现的问题及解决方法
2020/12/25 Python
CAT鞋英国官网:坚固耐用的靴子和鞋
2016/10/21 全球购物
安全资料员岗位职责
2013/12/14 职场文书
公司营业员的自我评价
2014/03/04 职场文书
最新离婚协议书范本
2014/08/19 职场文书
党员十八大心得体会
2014/09/12 职场文书
导师工作推荐信
2015/03/27 职场文书
56句经典英文座右铭
2019/08/09 职场文书
python实现股票历史数据可视化分析案例
2021/06/10 Python