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练习之表单验证实现代码
Dec 14 Javascript
40个有创意的jQuery图片、内容滑动及弹出插件收藏集之一
Dec 31 Javascript
javascript 保存文件到本地实现方法
Nov 29 Javascript
HTML上传控件取消选择
Mar 06 Javascript
JavaScript中匿名函数用法实例
Mar 23 Javascript
javascript通过元素id和name直接取得元素的方法
Apr 28 Javascript
JavaScript判断浏览器及其版本信息
Jan 20 Javascript
jq给页面添加覆盖层遮罩的实例
Feb 16 Javascript
详解Vue2中组件间通信的解决全方案
Jul 28 Javascript
css和js实现弹出登录居中界面完整代码
Nov 26 Javascript
vue中axios的二次封装实例讲解
Oct 14 Javascript
详解Vue中$props、$attrs和$listeners的使用方法
Feb 18 Vue.js
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
索尼SONY ICF-7600A(W)电路分析
2021/03/01 无线电
介绍php设计模式中的工厂模式
2008/06/12 PHP
PHP 全角转半角实现代码
2010/05/16 PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
2014/09/09 PHP
php表单加入Token防止重复提交的方法分析
2016/10/10 PHP
五个jQuery图片画廊插件 推荐
2011/05/12 Javascript
jquery中ajax学习笔记一
2011/10/16 Javascript
json实现前后台的相互传值详解
2015/01/05 Javascript
AngularJS教程之环境设置
2016/08/16 Javascript
jquery 多个radio的click事件实例
2016/12/03 Javascript
浅谈Javascript中的Label语句
2016/12/14 Javascript
Node.js  事件循环详解及实例
2017/08/06 Javascript
js编写简单的聊天室功能
2017/08/17 Javascript
详解js获取video任意时间的画面截图
2019/04/17 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
DWR内存兼容及无法调用问题解决方案
2020/10/16 Javascript
nuxt 页面路由配置,主页轮播组件开发操作
2020/11/05 Javascript
python实现识别相似图片小结
2016/02/22 Python
Selenium(Python web测试工具)基本用法详解
2018/08/10 Python
python调用动态链接库的基本过程详解
2019/06/19 Python
使用python实现离散时间傅里叶变换的方法
2019/09/02 Python
Python如何基于selenium实现自动登录博客园
2019/12/16 Python
python库skimage给灰度图像染色的方法示例
2020/04/27 Python
Python dict的常用方法示例代码
2020/06/23 Python
Python图像读写方法对比
2020/11/16 Python
在HTML5中使用MathML数学公式的简单讲解
2016/02/19 HTML / CSS
英国在线花园中心:You Garden
2018/06/03 全球购物
亿阳信通股份有限公司C#笔试题
2016/12/06 面试题
幼儿园教师岗位职责
2014/03/17 职场文书
工作评语大全
2014/04/26 职场文书
公安派出所所长四风问题个人对照检查材料
2014/10/04 职场文书
八项规定自查自纠报告及整改措施
2014/10/26 职场文书
苦儿流浪记读书笔记
2015/07/01 职场文书
公司员工离职感言
2015/08/03 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
springboot+VUE实现登录注册
2021/05/27 Vue.js