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 相关文章推荐
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
Feb 03 Javascript
谈谈JavaScript中的函数与闭包
Apr 14 Javascript
javascript使用location.search的示例
Nov 05 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
Mar 03 Javascript
Jquery常用的方法汇总
Sep 01 Javascript
jquery实现触发时更新下拉列表内容的方法
Dec 02 Javascript
JavaScript原生数组Array常用方法
Apr 06 Javascript
微信小程序中进行地图导航功能的实现方法
Jun 29 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
Mar 13 Javascript
JavaScript实现简单的弹窗效果
May 19 Javascript
浅析 Vue 3.0 的组装式 API(一)
Aug 31 Javascript
JavaScript 语句之常用 for 循环详解
Mar 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
php文件缓存类用法实例分析
2015/04/22 PHP
PHP中的类型约束介绍
2015/05/11 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
找到了一篇jQuery与Prototype并存的冲突的解决方法
2007/08/29 Javascript
Node.js实现的简易网页抓取功能示例
2014/12/05 Javascript
Bootstrap按钮组件详解
2016/04/26 Javascript
基于JQuery及AJAX实现名人名言随机生成器
2017/02/10 Javascript
jQuery Validate 校验多个相同name的方法
2017/05/18 jQuery
详解Vue.js基于$.ajax获取数据并与组件的data绑定
2017/05/26 Javascript
写一个移动端惯性滑动&amp;回弹Vue导航栏组件 ly-tab
2018/03/06 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
2018/12/06 Javascript
vue中多路由表头吸顶实现的几种布局方式
2019/04/12 Javascript
vue 解决数组赋值无法渲染在页面的问题
2019/10/28 Javascript
Vue多选列表组件深入详解
2021/03/02 Vue.js
跟老齐学Python之编写类之二方法
2014/10/11 Python
Python中操作MySQL入门实例
2015/02/08 Python
python中sys.argv参数用法实例分析
2015/05/20 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
Python学习_几种存取xls/xlsx文件的方法总结
2018/05/03 Python
Python使用tkinter库实现文本显示用户输入功能示例
2018/05/30 Python
Python使用爬虫爬取静态网页图片的方法详解
2018/06/05 Python
python3.6数独问题的解决
2019/01/21 Python
Python遍历字典方式就实例详解
2019/12/28 Python
PyTorch实现更新部分网络,其他不更新
2019/12/31 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
Python configparser模块应用过程解析
2020/08/14 Python
用html5的canvas和JavaScript创建一个绘图程序的简单实例
2016/07/06 HTML / CSS
使用postMessage让 iframe自适应高度的方法示例
2019/10/08 HTML / CSS
英国电动工具购买网站:Anglia Tool Centre
2017/04/25 全球购物
怀俄明州飞钓:Platte River Fly Shop
2017/12/28 全球购物
一套SQL笔试题
2016/08/14 面试题
数控专业大学生的自我鉴定
2013/11/13 职场文书
机械系大学毕业生推荐信
2013/11/27 职场文书
中级会计大学生职业生涯规划书
2014/09/16 职场文书
百万英镑观后感
2015/06/09 职场文书
vue使用watch监听属性变化
2022/04/30 Vue.js