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 相关文章推荐
jQuery EasyUI中对表格进行编辑的实现代码
Jun 10 Javascript
javascript中Math.random()使用详解
Apr 15 Javascript
简述JavaScript的正则表达式中test()方法的使用
Jun 16 Javascript
下雪了 javascript实现雪花飞舞
Aug 02 Javascript
原生JS获取元素集合的子元素宽度实例
Dec 14 Javascript
JS中input表单隐藏域及其使用方法
Feb 13 Javascript
详解使用create-react-app快速构建React开发环境
May 16 Javascript
vue - vue.config.js中devServer配置方式
Oct 30 Javascript
JavaScript装饰者模式原理与用法实例详解
Mar 09 Javascript
Vue作用域插槽实现方法及作用详解
Jul 08 Javascript
nginx配置域名后的二级目录访问不同项目的配置操作
Nov 06 Javascript
nuxt.js服务端渲染中axios和proxy代理的配置操作
Nov 06 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 事务处理数据实现代码
2010/05/13 PHP
php网站来路获取代码(针对搜索引擎)
2010/06/08 PHP
深入理解PHP原理之Session Gc的一个小概率Notice
2011/04/12 PHP
解析php file_exists无效的解决办法
2013/06/26 PHP
PHP面向对象程序设计之接口用法
2014/08/20 PHP
PHP操作mysql数据库分表的方法
2016/06/09 PHP
javascript 时间比较实现代码
2009/10/28 Javascript
我的javascript 函数链之演变
2011/04/07 Javascript
一个基于jquery的文本框记数器
2012/09/19 Javascript
iframe子父页面调用js函数示例
2013/11/07 Javascript
jquery 操作两个select实现值之间的互相传递
2014/03/07 Javascript
javascript日期验证之输入日期大于等于当前日期
2015/12/13 Javascript
js HTML5 Ajax实现文件上传进度条功能
2016/02/13 Javascript
基于jQuery插件实现点击小图显示大图效果
2016/05/11 Javascript
微信小程序 前端源码逻辑和工作流详解
2016/10/08 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
微信小程序 图片宽高自适应详解
2017/05/11 Javascript
如何使用50行javaScript代码实现简单版的call,apply,bind
2019/08/14 Javascript
JS简单表单验证功能完整示例
2020/01/26 Javascript
python读取word文档,插入mysql数据库的示例代码
2018/11/07 Python
Python面向对象基础入门之编码细节与注意事项
2018/12/11 Python
Python爬虫——爬取豆瓣电影Top250代码实例
2019/04/17 Python
Python实现12306火车票抢票系统
2019/07/04 Python
解决Python设置函数调用超时,进程卡住的问题
2019/08/08 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
使用Keras画神经网络准确性图教程
2020/06/15 Python
在Keras中利用np.random.shuffle()打乱数据集实例
2020/06/15 Python
python实现单机五子棋
2020/08/28 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
世界上最好的威士忌和烈性酒购买网站:The Whisky Exchange
2016/11/20 全球购物
Mamas & Papas沙特阿拉伯:英国最受欢迎的婴儿品牌
2017/11/20 全球购物
美国隐形眼镜网:Major Lens
2018/02/09 全球购物
娇韵诗Clarins意大利官方网站:法国天然护肤品牌
2020/03/11 全球购物
计算机通信工程专业毕业生推荐信
2013/12/24 职场文书
职工培训工作总结
2015/08/10 职场文书
Vue3.0中Ref与Reactive的区别示例详析
2021/07/07 Vue.js