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获取特定name所有选中的checkbox,支持IE9标准模式
Mar 18 Javascript
js 数组操作之pop,push,unshift,splice,shift
Jan 29 Javascript
JavaScript获取伪元素(Pseudo-Element)属性的方法技巧
Mar 13 Javascript
JS显示下拉列表框内全部元素的方法
Mar 31 Javascript
jQuery实现延迟跳转的方法
Jun 05 Javascript
js如何打印object对象
Oct 16 Javascript
学习使用bootstrap的modal和carousel
Dec 09 Javascript
如何为vuex实现带参数的 getter和state.commit
Jan 04 Javascript
JavaScript递归函数定义与用法实例分析
Jan 24 Javascript
JS实现的全选、全不选及反选功能【案例】
Feb 19 Javascript
windows实现npm和cnpm安装步骤
Oct 24 Javascript
Javascript原生ajax请求代码实例
Feb 20 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学习笔记汇总
2014/10/05 PHP
PHP中加密解密函数与DES加密解密实例
2014/10/17 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
2015/12/02 PHP
非常实用的php验证码类
2016/05/15 PHP
PHP文件下载实例代码浅析
2016/08/17 PHP
php实现的SSO单点登录系统接入功能示例分析
2016/10/12 PHP
Yii框架用户登录session丢失问题解决方法
2017/01/07 PHP
checkbox 复选框不能为空
2009/07/11 Javascript
js使浏览器窗口最大化实现代码(适用于IE)
2013/08/07 Javascript
14个有用的Jquery技巧分享
2015/01/08 Javascript
JS+CSS实现精美的二级导航效果代码
2015/09/17 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形菜单
2015/11/30 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
2016/06/30 Javascript
JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
2016/10/10 Javascript
JS常见算法详解
2017/02/28 Javascript
js 数字、字符串、布尔值的转换方法(必看)
2017/04/07 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
2020/08/25 Javascript
详解Python中的正则表达式的用法
2015/04/09 Python
对Pandas DataFrame缺失值的查找与填充示例讲解
2018/11/06 Python
使用pyinstaller逆向.pyc文件
2019/12/20 Python
Python Numpy,mask图像的生成详解
2020/02/19 Python
Python IDLE或shell中切换路径的操作
2020/03/09 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
一个基于canvas的移动端图片编辑器的实现
2020/10/28 HTML / CSS
购买大码女装:Lane Bryant
2016/09/07 全球购物
GUESS盖尔斯法国官网:美国时尚品牌
2016/09/23 全球购物
YesBabyOnline美国:全球性的在线婚纱礼服工厂
2018/05/05 全球购物
马德里竞技官方网上商店:Atletico Madrid Shop
2019/03/31 全球购物
网络安全方面的面试题
2015/11/04 面试题
小学生红领巾广播稿
2014/01/21 职场文书
入党自我评价优缺点
2014/01/25 职场文书
苦儿流浪记读书笔记
2015/07/01 职场文书
一篇文章弄懂Python中的内建函数
2021/08/07 Python