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 滚轮事件使用说明
Mar 07 Javascript
js使用for循环与innerHTML获取选中tr下td值
Sep 26 Javascript
JavaScript在网页中画圆的函数arc使用方法
Nov 13 Javascript
AngularJS中监视Scope变量以及外部调用Scope方法
Jan 23 Javascript
JQuery导航菜单选择特效
Apr 11 Javascript
js Canvas实现圆形时钟教程
Sep 19 Javascript
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
Apr 26 jQuery
QQ跳转支付宝并自动领红包脚本(最新)
Jun 22 Javascript
Vue使用NProgress进度条的方法
Sep 21 Javascript
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
Oct 26 Javascript
vue实现购物车案例
May 30 Javascript
mustache.js实现首页元件动态渲染的示例代码
Dec 28 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
基于MySQL体系结构的分析
2013/05/02 PHP
解析PHP中$_FILES的使用以及注意事项
2013/07/05 PHP
PHP实现在线阅读PDF文件的方法
2015/06/23 PHP
php简单判断文本编码的方法
2015/07/30 PHP
详解cookie验证的php应用的一种SSO解决办法
2017/10/20 PHP
PHP中OpenSSL加密问题整理
2017/12/14 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
Hutia 的 JS 代码集
2006/10/24 Javascript
深入document.write()与HTML4.01的非成对标签的详解
2013/05/08 Javascript
JavaScript中的单引号和双引号报错的解决方法
2014/09/01 Javascript
js判断手机访问或者PC的几个例子(常用于手机跳转)
2015/12/15 Javascript
BootStrap无限级分类(无限极分类封装版)
2016/08/26 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
2016/09/17 Javascript
js HTML5手机刮刮乐代码
2020/09/29 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
实例讲解Vue.js中router传参
2018/04/22 Javascript
JS 验证码功能的三种实现方式
2018/11/26 Javascript
微信小程序实现点击空白隐藏的方法示例
2019/08/13 Javascript
基于JavaScript实现十五拼图代码实例
2020/04/26 Javascript
Python计算三角函数之asin()方法的使用
2015/05/15 Python
python实现批量改文件名称的方法
2015/05/25 Python
Python使用ftplib实现简易FTP客户端的方法
2015/06/03 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
2018/07/30 Python
Python列表生成式与生成器操作示例
2018/08/01 Python
根据tensor的名字获取变量的值方式
2020/01/04 Python
tensorflow 变长序列存储实例
2020/01/20 Python
python3实现语音转文字(语音识别)和文字转语音(语音合成)
2020/10/14 Python
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
博士生入学考试推荐信
2013/11/17 职场文书
公司合作协议书范本
2014/04/18 职场文书
公司活动总结怎么写
2014/06/25 职场文书
个性发展自我评价2015
2015/03/09 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
婚礼双方父亲致辞
2015/07/27 职场文书
2016年秋季运动会通讯稿
2015/11/25 职场文书
fastdfs+nginx集群搭建的实现
2021/03/31 Servers