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 相关文章推荐
jQuery Study Notes学习笔记 (二)
Aug 04 Javascript
JQuery 应用 JQuery.groupTable.js
Dec 15 Javascript
js实现带搜索功能的下拉框实时搜索实时匹配
Nov 05 Javascript
js实现单行文本向上滚动效果实例代码
Nov 28 Javascript
常用jQuery代码分享
Jul 14 Javascript
jQuery实现的精美平滑二级下拉菜单效果代码
Mar 28 Javascript
BootStrap响应式导航条实例介绍
May 06 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
Sep 08 Javascript
微信JSAPI支付操作需要注意的细节
Jan 10 Javascript
React Native使用fetch实现图片上传的示例代码
Mar 07 Javascript
微信小程序 scroll-view 实现锚点跳转功能
Dec 12 Javascript
JavaScript监听键盘事件代码实现
Jun 03 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源代码
2009/08/21 PHP
PHP-FPM的配置与优化讲解
2019/03/15 PHP
actionscript与javascript的区别
2011/05/25 Javascript
通过下拉框的值来确定输入框是否可以为空的代码
2011/10/18 Javascript
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
2013/12/13 Javascript
angular中使用路由和$location切换视图
2015/01/23 Javascript
javascript解三阶幻方(九宫格)
2015/04/22 Javascript
Node.js数据库操作之连接MySQL数据库(一)
2017/03/04 Javascript
简述vue中的config配置
2018/01/23 Javascript
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
解决linux下node.js全局模块找不到的问题
2018/05/15 Javascript
微信小程序select下拉框实现效果
2019/05/15 Javascript
微信小程序官方动态自定义底部tabBar的例子
2019/09/04 Javascript
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
win7安装python生成随机数代码分享
2013/12/27 Python
下载给定网页上图片的方法
2014/02/18 Python
Python处理JSON数据并生成条形图
2016/08/05 Python
详细介绍Python的鸭子类型
2016/09/12 Python
Python利用正则表达式实现计算器算法思路解析
2018/04/25 Python
使用Python读取二进制文件的实例讲解
2018/07/09 Python
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
2018/12/20 Python
wxPython实现分隔窗口
2019/11/19 Python
Python调用OpenCV实现图像平滑代码实例
2020/06/19 Python
Django contrib auth authenticate函数源码解析
2020/11/12 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
M1芯片安装python3.9.1的实现
2021/02/02 Python
美国户外生活方式品牌:Eddie Bauer
2016/12/28 全球购物
Ellos瑞典官网:北欧地区时尚、美容和住宅领域领先的电子商务网站
2019/11/21 全球购物
main 主函数执行完毕后,是否可能会再执行一段代码,给出说明
2012/12/05 面试题
护理学毕业生求职信
2013/11/14 职场文书
办公室秘书岗位职责范本
2014/02/11 职场文书
清洁工个人总结
2015/03/04 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
走进毛泽东观后感
2015/06/04 职场文书
Pytorch GPU内存占用很高,但是利用率很低如何解决
2021/06/01 Python
升级 Win11 还是坚守 Win10?微软 Win11 新系统缺失功能大盘点
2022/04/05 数码科技