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实现的一个图片滚动切换
Jun 21 Javascript
在jQuery ajax中按钮button和submit的区别分析
Oct 07 Javascript
js的压缩及jquery压缩探讨(提高页面加载性能/保护劳动成果)
Jan 29 Javascript
JS+flash实现chrome和ie浏览器下同时可以复制粘贴
Sep 22 Javascript
javascript实现回到顶部特效
May 06 Javascript
ECMAScript6函数默认参数
Jun 12 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
Sep 13 Javascript
前端实现文件的断点续传(前端文件提交+后端PHP文件接收)
Nov 04 Javascript
js编写三级联动简单案例
Dec 21 Javascript
详解vue 模版组件的三种用法
Jul 21 Javascript
angularJS实现动态添加,删除div方法
Feb 27 Javascript
详解vue-cli 本地开发mock数据使用方法
May 29 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
实现“上一页”和“下一页按钮
2006/10/09 PHP
PHP实现多服务器session共享之NFS共享的方法
2007/03/16 PHP
用PHP生成html分页列表的代码
2007/03/18 PHP
php中的观察者模式
2010/03/24 PHP
PHP If Else(elsefi) 语句
2013/04/07 PHP
PHP实现算式验证码和汉字验证码实例
2015/03/09 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
Javascript里使用Dom操作Xml
2007/01/22 Javascript
通过Unicode转义序列来加密,按你说的可以算是混淆吧
2007/05/06 Javascript
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
jquery改变disabled的boolean状态的三种方法
2013/12/13 Javascript
HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列
2015/04/26 Javascript
node.js爬虫爬取拉勾网职位信息
2017/03/14 Javascript
微信小程序 监听手势滑动切换页面实例详解
2017/06/15 Javascript
在 Node.js 中使用 async 函数的方法
2017/11/17 Javascript
React Native登录之指纹登录篇的示例代码
2020/11/03 Javascript
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
Python文件右键找不到IDLE打开项解决办法
2015/06/08 Python
python实现下载指定网址所有图片的方法
2015/08/08 Python
Python装饰器用法示例小结
2018/02/11 Python
python数据分析数据标准化及离散化详解
2018/02/26 Python
深入理解Python 关于supper 的 用法和原理
2018/02/28 Python
Python基于最小二乘法实现曲线拟合示例
2018/06/14 Python
numpy.transpose()实现数组的转置例子
2019/12/02 Python
如何写python的配置文件
2020/06/07 Python
Python爬虫破解登陆哔哩哔哩的方法
2020/11/17 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
2021/01/21 Python
元旦促销方案
2014/03/15 职场文书
2016廉洁从业学习心得体会
2016/01/19 职场文书
Java基础之详解HashSet的使用方法
2021/06/30 Java/Android
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android
JS精髓原型链继承及构造函数继承问题纠正
2022/06/16 Javascript
搭建zabbix监控以及邮件报警的超级详细教学
2022/07/15 Servers