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中的同名标识符优先级
Dec 06 Javascript
一个简单的jquery进度条示例
Apr 28 Javascript
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
Apr 05 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
Apr 13 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
Aug 01 Javascript
js友好的时间返回函数
Aug 24 Javascript
探讨跨域请求资源的几种方式(总结)
Dec 02 Javascript
JavaScript中一些特殊的字符运算
Aug 17 Javascript
vue-router路由懒加载和权限控制详解
Dec 13 Javascript
vue中阻止click事件冒泡,防止触发另一个事件的方法
Feb 08 Javascript
浅谈针对Vue相同路由不同参数的刷新问题
Sep 29 Javascript
element中el-container容器与div布局区分详解
May 13 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运行提示:Fatal error Allowed memory size内存不足的解决方法
2014/12/17 PHP
apache php mysql开发环境安装教程
2016/07/28 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
2018/01/20 PHP
YUI 读码日记之 YAHOO.util.Dom - Part.1
2008/03/22 Javascript
ExtJS GTGrid 简单用户管理
2009/07/01 Javascript
点击文章内容处弹出页面代码
2009/10/01 Javascript
基于jquery实现页面滚动到底自动加载数据的功能
2015/12/19 Javascript
JavaScipt选取文档元素的方法(推荐)
2016/08/05 Javascript
源码分析Vue.js的监听实现教程
2017/04/23 Javascript
react-native android状态栏的实现
2018/06/15 Javascript
JavaScript事件冒泡与事件捕获实例分析
2018/08/01 Javascript
Node.js搭建WEB服务器的示例代码
2018/08/15 Javascript
Vue监听数据渲染DOM完以后执行某个函数详解
2018/09/11 Javascript
Node.js 如何利用异步提升任务处理速度
2019/01/07 Javascript
一文了解Vue中的nextTick
2019/05/06 Javascript
PHP读取远程txt文档到数组并实现遍历
2020/08/25 Javascript
总结Python编程中三条常用的技巧
2015/05/11 Python
简单谈谈Python中的json与pickle
2017/07/19 Python
python3爬取各类天气信息
2018/02/24 Python
python实现剪切功能
2019/01/23 Python
详解Python循环作用域与闭包
2019/03/21 Python
python使用time、datetime返回工作日列表实例代码
2019/05/09 Python
基于python实现matlab filter函数过程详解
2020/06/08 Python
python调用win32接口进行截图的示例
2020/11/11 Python
经典演讲稿范文
2013/12/30 职场文书
公司接待方案
2014/03/08 职场文书
历史学专业求职信
2014/06/19 职场文书
授权委托书
2014/07/31 职场文书
公司委托书格式范本
2014/09/16 职场文书
公司捐书倡议书
2015/04/27 职场文书
初中语文教师研修日志
2015/11/13 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
2019年年中工作总结讲话稿模板
2019/03/25 职场文书
python中print格式化输出的问题
2021/04/16 Python
索尼ICF-36收音机评测
2022/04/30 无线电
mysql数据库实现设置字段长度
2022/06/10 MySQL