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日历 推荐
Dec 03 Javascript
项目实践之javascript技巧
Dec 06 Javascript
javascript 面向对象编程基础 多态
Aug 21 Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
Aug 18 Javascript
原生JavaScript实现连连看游戏(附源码)
Nov 05 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
Feb 07 Javascript
基于Three.js插件制作360度全景图
Nov 29 Javascript
微信小程序 开发之顶部导航栏实例代码
Feb 23 Javascript
JS 验证密码 不能为空,必须含有数字、字母、特殊字符,长度在8-12位
Jun 21 Javascript
vuex中使用对象展开运算符的示例
Sep 25 Javascript
IDEA安装vue插件图文详解
Sep 26 Javascript
Angular5整合富文本编辑器TinyMCE的方法(汉化+上传)
May 26 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抽奖小程序的实现代码
2013/06/18 PHP
CI框架中通过hook的方式实现简单的权限控制
2015/01/07 PHP
php使用类继承解决代码重复的问题
2015/02/11 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
繁简字转换功能
2006/07/19 Javascript
PJ Blog修改-禁止复制的代码和方法
2006/10/25 Javascript
JavaScript 参考教程
2006/12/29 Javascript
javascript jQuery $.post $.ajax用法
2008/07/09 Javascript
javascript动画之圆形运动,环绕鼠标运动作小球
2010/07/20 Javascript
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
js控制滚动条缓慢滚动到顶部实现代码
2013/03/20 Javascript
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
2013/04/02 Javascript
JS的千分位算法实现思路
2013/07/31 Javascript
js检测判断日期大于多少天的方法
2015/05/04 Javascript
基于jquery实现一个滚动的分步注册向导-附源码
2015/08/26 Javascript
javascript中闭包(Closure)详解
2016/01/06 Javascript
获取IE浏览器Cookie信息的方法
2017/01/23 Javascript
Mac系统下Webstorm快捷键整理大全
2017/05/28 Javascript
jQuery ajax调用webservice注意事项
2017/10/08 jQuery
Nodejs调用Dll模块的方法
2018/09/17 NodeJs
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
2019/01/18 Javascript
Vue使用watch监听一个对象中的属性的实现方法
2019/05/10 Javascript
Ajax请求时无法重定向的问题解决代码详解
2019/06/21 Javascript
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
Python编程中的for循环语句学习教程
2015/10/14 Python
将python图片转为二进制文本的实例
2019/01/24 Python
通过python扫描二维码/条形码并打印数据
2019/11/14 Python
python3爬取torrent种子链接实例
2020/01/16 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
详解canvas多边形(蜘蛛图)的画法示例
2018/01/29 HTML / CSS
临床护士自荐信
2014/01/31 职场文书
岗位聘任书范文
2014/03/29 职场文书
党员剖析材料范文
2014/12/18 职场文书
秋收起义观后感
2015/06/11 职场文书
Windows Server 2019 域控制器安装图文教程
2022/04/28 Servers