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 相关文章推荐
自写简单JS判断是否已经弹出页面
Oct 20 Javascript
jQuery学习笔记之jQuery的事件
Dec 22 Javascript
关于jQuery object and DOM element
Apr 15 Javascript
javascript生成随机颜色示例代码
May 05 Javascript
js调出上下文菜单的实例
Dec 17 Javascript
jQuery 3 中的新增功能汇总介绍
Jun 12 Javascript
JavaScript兼容性总结之获取非行间样式案例
Aug 07 Javascript
jQuery+Ajax实现用户名重名实时检测
Jun 01 jQuery
基于 Vue 实现一个酷炫的 menu插件
Nov 14 Javascript
vue-cli webpack 引入jquery的方法
Jan 10 jQuery
详解angular2如何手动点击特定元素上的点击事件
Oct 16 Javascript
Vue实现base64编码图片间的切换功能
Dec 04 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绘图中显示不出图片的原因及解决
2014/03/05 PHP
php版微信公众平台实现预约提交后发送email的方法
2016/09/26 PHP
smarty模板数学运算示例
2016/12/11 PHP
一段效率很高的for循环语句使用方法
2007/08/13 Javascript
用js解决数字不能换行问题
2010/08/10 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
js实现每日自动换一张图片的方法
2015/05/04 Javascript
AngularJS实现一次监听多个值发生的变化
2016/08/31 Javascript
js继承实现方法详解
2016/12/16 Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
2017/11/22 Javascript
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
react项目实践之webpack-dev-serve
2018/09/14 Javascript
微信小程序之数据绑定原理解析
2019/08/14 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
python查看FTP是否能连接成功的方法
2015/07/30 Python
Python验证企业工商注册码
2015/10/25 Python
Python命名空间的本质和加载顺序
2018/12/17 Python
基于python实现简单网页服务器代码实例
2020/09/14 Python
CSS3的resize属性使用初探
2015/09/27 HTML / CSS
html5利用canvas实现颜色容差抠图功能
2019/12/23 HTML / CSS
阿迪达斯加拿大官网:Adidas加拿大
2016/08/25 全球购物
墨尔本复古时尚品牌:Dangerfield
2018/12/12 全球购物
北京一家公司的.net开发工程师笔试题
2012/04/17 面试题
收银出纳员岗位职责
2014/02/23 职场文书
一体化教学实施方案
2014/05/10 职场文书
感恩节活动策划方案
2014/05/16 职场文书
广告学专业求职信
2014/06/19 职场文书
2014年征兵标语
2014/06/20 职场文书
十佳标兵事迹材料
2014/08/18 职场文书
2014乡镇机关党员个人对照检查材料思想汇报
2014/10/09 职场文书
村干部群众路线整改措施思想汇报
2014/10/12 职场文书
英语辞职信怎么写
2015/02/28 职场文书
给老婆的保证书怎么写
2015/05/08 职场文书
MySQL慢查询优化解决问题
2022/03/17 MySQL
使用 CSS 构建强大且酷炫的粒子动画效果
2022/08/14 HTML / CSS
码云(gitee)通过git自动同步到阿里云服务器
2022/12/24 Servers