JavaScript实现找出数组中最长的连续数字序列


Posted in Javascript onSeptember 03, 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 相关文章推荐
Extjs列表详细信息窗口新建后自动加载解决方法
Apr 02 Javascript
imgAreaSelect 中文文档帮助说明
Oct 08 Javascript
javascript实现点击单选按钮链接转向对应网址的方法
Aug 12 Javascript
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
Dec 07 Javascript
分享网页检测摇一摇实例代码
Jan 14 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
Aug 05 Javascript
vue.js移动端app实战1:初始配置详解
Jul 24 Javascript
JS实现的全排列组合算法示例
Oct 09 Javascript
vue-cli脚手架-bulid下的配置文件
Mar 27 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
Aug 05 Javascript
Vue项目中使用mock.js的完整步骤
Jan 12 Vue.js
Javascript设计模式之原型模式详细
Oct 05 Javascript
js实现的类似于asp数据字典的数据类型代码实例
Sep 03 #Javascript
jQuery表格列宽可拖拽改变且兼容firfox
Sep 03 #Javascript
Egret引擎开发指南之视觉编程
Sep 03 #Javascript
Egret引擎开发指南之发布项目
Sep 03 #Javascript
Egret引擎开发指南之运行项目
Sep 03 #Javascript
JavaScript实现找出字符串中第一个不重复的字符
Sep 03 #Javascript
Egret引擎开发指南之编译项目
Sep 03 #Javascript
You might like
PHP邮件群发机实现代码
2016/02/16 PHP
ThinkPHP框架里隐藏index.php
2016/04/12 PHP
WordPress中设置Post Type自定义文章类型的实例教程
2016/05/10 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
一个可以随意添加多个序列的tag函数
2009/07/21 Javascript
jQuery移动和复制dom节点实用DOM操作案例
2012/12/17 Javascript
js中传递特殊字符(+,&amp;)的方法
2014/01/16 Javascript
jquery组件使用中遇到的问题整理及解决
2014/02/21 Javascript
基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码
2014/05/11 Javascript
js简单实现交换Li的值
2014/05/22 Javascript
JavaScript中连接操作Oracle数据库实例
2015/04/02 Javascript
javascript实现点击商品列表checkbox实时统计金额的方法
2015/05/15 Javascript
浅谈javascript中关于日期和时间的基础知识
2016/07/13 Javascript
原生javascript 学习之js变量全面了解
2016/07/14 Javascript
vue2笔记 — vue-router路由懒加载的实现
2017/03/03 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
2017/11/11 Javascript
集成vue到jquery/bootstrap项目的方法
2018/02/10 jQuery
vue自定义全局共用函数详解
2018/09/18 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
如何通过setTimeout理解JS运行机制详解
2019/03/23 Javascript
微信小程序点击列表跳转到对应详情页过程解析
2019/09/26 Javascript
Django中实现一个高性能计数器(Counter)实例
2014/07/09 Python
Python实现全角半角转换的方法
2014/08/18 Python
用python 制作图片转pdf工具
2015/01/30 Python
python去除文件中重复的行实例
2018/06/29 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
python机器学习包mlxtend的安装和配置详解
2019/08/21 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
2020/03/08 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
2020/06/30 Python
美国珠宝精品店:Opulent Jewelers
2019/08/20 全球购物
求职信内容怎么写
2014/05/26 职场文书
大学生考试作弊检讨书
2014/09/21 职场文书
自主招生自荐信格式
2015/03/04 职场文书
刑事上诉状(量刑过重)
2015/05/23 职场文书
房屋产权证明书
2015/06/19 职场文书
环保建议书作文500字
2015/09/14 职场文书