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 相关文章推荐
HTML Dom与Css控制方法
Oct 25 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
Mar 02 Javascript
jQuery实现的模拟弹出窗口功能示例
Nov 24 Javascript
swiper自定义分页器使用方法详解
Sep 14 Javascript
基于Axios 常用的请求方法别名(详解)
Mar 13 Javascript
vue.js前后端数据交互之提交数据操作详解
Apr 24 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
Apr 27 jQuery
vue项目中添加单元测试的方法
Jul 21 Javascript
JavaScript中关于base64的一些事
May 06 Javascript
bootstrap中的导航条实例代码详解
May 20 Javascript
vue+element表格导出为Excel文件
Sep 26 Javascript
jQuery实现聊天对话框
Feb 08 jQuery
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获取http请求的头信息实现步骤
2012/12/16 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
2015/12/10 PHP
Smarty简单生成表单元素的方法示例
2016/05/23 PHP
Ajax+Jpgraph实现的动态折线图功能示例
2019/02/11 PHP
javascript之学会吝啬 精简代码
2010/04/25 Javascript
js和css写一个可以自动隐藏的悬浮框
2014/03/05 Javascript
js清空表单数据的两种方式(遍历+reset)
2014/07/18 Javascript
javascript中offset、client、scroll的属性总结
2015/08/13 Javascript
smartcrop.js智能图片裁剪库
2015/10/14 Javascript
利用jQuery及AJAX技术定时更新GridView的某一列数据
2015/12/04 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
jquery实现文本框的禁用和启用
2016/12/07 Javascript
Js实现中国公民身份证号码有效性验证实例代码
2017/05/03 Javascript
利用nvm管理多个版本的node.js与npm详解
2017/11/02 Javascript
Vue解析剪切板图片并实现发送功能
2020/02/04 Javascript
JS co 函数库的含义和用法实例总结
2020/04/08 Javascript
Antd的table组件表格的序号自增操作
2020/10/27 Javascript
python 正则式使用心得
2009/05/07 Python
Python统计日志中每个IP出现次数的方法
2015/07/06 Python
python3批量删除豆瓣分组下的好友的实现代码
2016/06/07 Python
Python中pass的作用与使用教程
2020/11/13 Python
html5 Canvas画图教程(8)—canvas里画曲线之bezierCurveTo方法
2013/01/09 HTML / CSS
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
美国值得信赖的婚恋交友网站:eHarmony
2018/10/04 全球购物
时尚孕妇装:Ingrid & Isabel
2019/05/08 全球购物
StringBuilder和String的区别
2015/05/18 面试题
公务员年总结的自我评价
2013/10/25 职场文书
最新教师自我评价分享
2013/11/12 职场文书
化妆品店促销方案
2014/02/24 职场文书
高中语文课后反思
2014/04/27 职场文书
2015小学教师年度工作总结
2015/05/12 职场文书
2015年计划生育协会工作总结
2015/05/13 职场文书
校友会致辞
2015/07/30 职场文书
会议室管理制度范本
2015/08/06 职场文书
写一个Python脚本自动爬取Bilibili小视频
2021/04/24 Python
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android