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 相关文章推荐
url 特殊字符 传递参数解决方法
Jan 01 Javascript
JavaScript中将一个值转换为字符串的方法分析[译]
Sep 21 Javascript
将查询条件的input、select清空
Jan 14 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
May 07 Javascript
JavaScript字符串对象substring方法入门实例(用于截取字符串)
Oct 17 Javascript
Javascript编程中几种继承方式比较分析
Nov 28 Javascript
jQuery zTree加载树形菜单功能
Feb 25 Javascript
Angular表单验证实例详解
Oct 20 Javascript
原生js实现类似fullpage的单页/全屏滚动
Jan 22 Javascript
关于jquery layui弹出层的使用方法
Apr 21 jQuery
教你如何编写Vue.js的单元测试的方法
Oct 17 Javascript
pm2发布node配置文件ecosystem.json详解
May 15 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递归创建多级目录
2015/11/05 PHP
JavaScript QueryString解析类代码
2010/01/17 Javascript
javascript 验证日期的函数
2010/03/18 Javascript
JQuery 选择器、过滤器介绍
2011/02/14 Javascript
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
jquery实现简洁文件上传表单样式
2015/11/02 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
js生成随机数方法和实例
2017/01/17 Javascript
基于javascript的异步编程实例详解
2017/04/10 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
vuex的简单使用教程
2018/02/02 Javascript
微信小程序之swiper轮播图中的图片自适应高度的方法
2018/04/23 Javascript
微信小程序实现分享到朋友圈功能
2018/07/19 Javascript
原生js实现购物车
2020/09/23 Javascript
基于Vue+Webpack拆分路由文件实现管理
2020/11/16 Javascript
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
Python Deque 模块使用详解
2014/07/04 Python
在Django的视图(View)外使用Session的方法
2015/07/23 Python
Python的Django框架中模板碎片缓存简介
2015/07/24 Python
Python读取指定目录下指定后缀文件并保存为docx
2017/04/23 Python
python将控制台输出保存至文件的方法
2019/01/07 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
2019/02/07 Python
python Socket网络编程实现C/S模式和P2P
2020/06/22 Python
python 解决pycharm运行py文件只有unittest选项的问题
2020/09/01 Python
解决Pycharm 运行后没有输出的问题
2021/02/05 Python
选购世界上最好的美妆品:Cult Beauty
2017/11/03 全球购物
求两个数的乘积和商数,该作用由宏定义来实现
2013/03/13 面试题
J2EE的优越性主要表现在哪些方面
2016/03/28 面试题
外贸实习生自荐信范文
2013/11/24 职场文书
《十六年前的回忆》教学反思
2014/02/14 职场文书
仓库管理员岗位职责
2014/03/19 职场文书
师德师风自查总结
2014/10/14 职场文书
职场领导同事生日简短祝福语
2019/08/06 职场文书
TensorFlow的自动求导原理分析
2021/05/26 Python
asyncio异步编程之Task对象详解
2022/03/13 Python