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动画对象支持加速、减速、缓入、缓出的实现代码
Sep 30 Javascript
JavaScript的递归之递归与循环示例介绍
Aug 05 Javascript
JS实现把鼠标放到链接上出现滚动文字的方法
Apr 06 Javascript
BootStrap智能表单实战系列(九)表单图片上传的支持
Jun 13 Javascript
微信小程序 实例开发总结
Apr 26 Javascript
javascript实现数字配对游戏的实例讲解
Dec 14 Javascript
Three.JS实现三维场景
Dec 30 Javascript
怎样使你的 JavaScript 代码简单易读(推荐)
Apr 16 Javascript
Vue SPA 初次进入加载动画实现代码
Nov 14 Javascript
Vue实现简单计算器案例
Feb 25 Javascript
浅谈Ant Design Pro 菜单自定义 icon
Nov 17 Javascript
node使用async_hooks模块进行请求追踪
Jan 28 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验证复选框有效性的示例
2013/11/13 PHP
百度工程师讲PHP函数的实现原理及性能分析(一)
2015/05/13 PHP
简单谈谈PHP vs Node.js
2015/07/17 PHP
利用php获得flv视频长度的实例代码
2017/10/26 PHP
JavaScript使用技巧精萃[代码非常实用]
2008/11/21 Javascript
一个JavaScript递归实现反转数组字符串的实例
2014/10/14 Javascript
jQuery中:password选择器用法实例
2015/01/03 Javascript
基于PHP和Mysql相结合使用jqGrid读取数据并显示
2015/12/02 Javascript
原生js页面滚动延迟加载图片
2015/12/20 Javascript
Vue组件BootPage实现简单的分页功能
2016/09/12 Javascript
JavaScript reduce和reduceRight详解
2016/10/24 Javascript
spirngmvc js传递复杂json参数到controller的实例
2018/03/29 Javascript
JS中实现隐藏部分姓名或者电话号码的代码
2018/07/17 Javascript
详解Vue iview IE浏览器不兼容报错(Iview Bable polyfill)
2019/01/07 Javascript
基于JavaScript实现控制下拉列表
2020/05/08 Javascript
[45:52]2018DOTA2亚洲邀请赛 4.1小组赛 A组加赛 LGD vs Liquid
2018/04/02 DOTA
Python探索之pLSA实现代码
2017/10/25 Python
利用python编写一个图片主色转换的脚本
2017/12/07 Python
python版本的仿windows计划任务工具
2018/04/30 Python
使用pandas实现csv/excel sheet互相转换的方法
2018/12/10 Python
Python实现将字符串的首字母变为大写,其余都变为小写的方法
2019/06/11 Python
Python GUI学习之登录系统界面篇
2019/08/21 Python
学python安装的软件总结
2019/10/12 Python
HTML5中新标签和常用标签详解
2014/03/07 HTML / CSS
香蕉共和国工厂店:Banana Republic Factory
2018/06/09 全球购物
英国复古服装和球衣购买网站:3Retro Football
2018/07/09 全球购物
高中考试作弊检讨书
2014/01/14 职场文书
文明教师事迹材料
2014/01/16 职场文书
大二学生职业生涯规划书
2014/02/05 职场文书
镇政府副镇长群众路线专题民主生活会对照检查材料
2014/09/19 职场文书
四风问题对照检查材料整改措施
2014/09/27 职场文书
学生党员批评与自我批评
2014/10/15 职场文书
计算机专业自荐信范文
2015/03/26 职场文书
幼儿园安全工作总结2015
2015/04/20 职场文书
实验心得体会范文
2016/01/25 职场文书
小学四年级作文之写景
2019/08/23 职场文书