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 相关文章推荐
Packer 3.0 JS压缩及混淆工具 下载
May 03 Javascript
Js组件的一些写法
Sep 10 Javascript
js获取当前路径的简单示例代码
Jan 08 Javascript
javascript实现无缝上下滚动特效
Dec 16 Javascript
jQuery中的siblings用法实例分析
Dec 24 Javascript
Vue数据驱动模拟实现2
Jan 11 Javascript
详解AngularJS 路由 resolve用法
Apr 24 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
Sep 18 Javascript
微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解
Mar 28 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
Dec 11 Javascript
完美解决vue 中多个echarts图表自适应的问题
Jul 19 Javascript
Vue.js原理分析之nextTick实现详解
Sep 07 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之apc
2013/05/15 PHP
php页面函数设置超时限制的方法
2014/12/01 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
javascript 得到变量类型的函数
2010/05/19 Javascript
addEventListener 的用法示例介绍
2014/05/07 Javascript
js css 实现遮罩层覆盖其他页面元素附图
2014/09/22 Javascript
node.js中的fs.link方法使用说明
2014/12/15 Javascript
教你如何使用firebug调试功能了解javascript闭包和this
2015/03/04 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
2015/03/04 Javascript
js实现键盘Enter键提交表单的方法
2015/05/27 Javascript
详解nodejs 文本操作模块-fs模块(一)
2016/12/22 NodeJs
Vue-resource拦截器判断token失效跳转的实例
2017/10/27 Javascript
vue中keep-alive的用法及问题描述
2018/05/15 Javascript
微信小程序http连接访问解决方案的示例
2018/11/05 Javascript
Vue路由对象属性 .meta $route.matched详解
2019/11/04 Javascript
JS如何实现封装列表右滑动删除收藏按钮
2020/07/23 Javascript
[01:20]DOTA2上海特级锦标赛现场采访:谁的ID最受青睐
2016/03/25 DOTA
[46:55]完美世界DOTA2联赛决赛 FTD vs Phoenix 第三场 11.08
2020/11/11 DOTA
python查看FTP是否能连接成功的方法
2015/07/30 Python
Python环境变量设置方法
2016/08/28 Python
PyQt打开保存对话框的方法和使用详解
2019/02/27 Python
Python根据当前日期取去年同星期日期
2019/04/14 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
django框架CSRF防护原理与用法分析
2019/07/22 Python
Python插件机制实现详解
2020/05/04 Python
html5-websocket基于远程方法调用的数据交互实现
2012/12/04 HTML / CSS
html5指南-3.如何实现html元素拖拽功能
2013/01/07 HTML / CSS
欧缇丽英国官方网站:Caudalie英国
2016/08/17 全球购物
伦敦时尚生活的缩影:LN-CC
2017/01/24 全球购物
C#里面可以避免一个类被其他类继承么?如何?
2013/09/26 面试题
心得体会怎么写
2013/12/30 职场文书
前台文员我鉴定
2014/01/12 职场文书
物联网工程专业推荐信
2014/09/08 职场文书
借款协议书
2014/09/16 职场文书
赢在中国观后感
2015/06/02 职场文书