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 相关文章推荐
JavaScript 事件记录使用说明
Oct 20 Javascript
Javascript 实用小技巧
Apr 07 Javascript
javascript学习笔记(七)利用javascript来创建和存储cookie
Apr 08 Javascript
js操纵跨frame的三级联动select下拉选项实例介绍
May 19 Javascript
鼠标经过显示二级菜单js特效
Aug 13 Javascript
javascript背景时钟实现方法
Jun 18 Javascript
JavaScript 闭包机制详解及实例代码
Oct 10 Javascript
React如何将组件渲染到指定DOM节点详解
Sep 08 Javascript
怎样使你的 JavaScript 代码简单易读(推荐)
Apr 16 Javascript
原生js实现trigger方法示例代码
May 22 Javascript
js实现简单的日历显示效果函数示例
Nov 25 Javascript
angular异步验证器防抖实例详解
Mar 31 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
MySQL相关说明
2007/01/15 PHP
PHP写MySQL数据 实现代码
2009/06/15 PHP
PHP数组实例总结与说明
2011/08/23 PHP
PHP加Nginx实现动态裁剪图片方案
2014/03/10 PHP
8个PHP程序员常用的功能汇总
2014/12/18 PHP
PHP房贷计算器实例代码,等额本息,等额本金
2017/04/01 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
JavaScript触发器详解
2007/03/10 Javascript
事件委托与阻止冒泡阻止其父元素事件触发
2014/09/02 Javascript
Node.js事件驱动
2015/06/18 Javascript
jquery点击缩略图切换视频播放特效代码分享
2015/09/15 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
详解React-Todos入门例子
2016/11/08 Javascript
Javascript中this关键字指向问题的测试与详解
2017/08/11 Javascript
详解Angular5/Angular6项目如何添加热更新(HMR)功能
2018/10/10 Javascript
详解JS实现简单的时分秒倒计时代码
2019/04/25 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
[01:14:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Orenda
2014/05/22 DOTA
python继承和抽象类的实现方法
2015/01/14 Python
Python 文件操作的详解及实例
2017/09/18 Python
Python 创建新文件时避免覆盖已有的同名文件的解决方法
2018/11/16 Python
python连接mongodb集群方法详解
2020/02/13 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
2020/03/06 Python
Django ORM实现按天获取数据去重求和例子
2020/05/18 Python
python GUI模拟实现计算器
2020/06/22 Python
获取CSDN文章内容并转换为markdown文本的python
2020/09/06 Python
Python批量删除mysql中千万级大量数据的脚本分享
2020/12/03 Python
用HTML5实现网站在windows8中贴靠的方法
2013/04/21 HTML / CSS
法语专业求职信
2014/07/20 职场文书
机械设计专业大学生职业生涯规划书范文
2014/09/13 职场文书
资源环境与城乡规划管理专业自荐书
2014/09/26 职场文书
乡镇三严三实学习心得体会
2014/10/13 职场文书
2016年幼儿园教研活动总结
2016/04/05 职场文书
python实现简单反弹球游戏
2021/04/12 Python
OpenCV 图像梯度的实现方法
2021/07/25 Python
python manim实现排序算法动画示例
2022/08/14 Python