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 相关文章推荐
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
Aug 23 Javascript
javascript在网页中实现读取剪贴板粘贴截图功能
Jun 07 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
Jun 08 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
Sep 28 Javascript
Bootstrap媒体对象学习使用
Mar 07 Javascript
原JS实现banner图的常用功能
Jun 12 Javascript
使用watch监听路由变化和watch监听对象的实例
Feb 24 Javascript
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
Jul 24 Javascript
vue中tab选项卡的实现思路
Nov 25 Javascript
JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】
Feb 21 Javascript
解决vue单页面应用中动态修改title问题
Jun 09 Javascript
JS变量提升及函数提升实例解析
Sep 03 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
asp.net和asp下ACCESS的参数化查询
2008/06/11 Javascript
获取内联和链接中的样式(js代码)
2013/04/11 Javascript
基于Jquery实现键盘按键监听
2014/05/11 Javascript
Javascript非构造函数的继承
2015/04/27 Javascript
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
Three.js的使用及绘制基础3D图形详解
2017/04/27 Javascript
基于Vue实现后台系统权限控制的示例代码
2017/08/29 Javascript
什么是Vue.js框架 为什么选择它?
2017/10/17 Javascript
JavaScript实现获取select下拉框中第一个值的方法
2018/02/06 Javascript
AngularJS修改model值时,显示内容不变的实例
2018/09/13 Javascript
灵活使用console让js调试更简单的方法步骤
2019/04/23 Javascript
layui自己添加图片按钮并点击跳转页面的例子
2019/09/14 Javascript
javascript实现弹出层效果
2019/12/10 Javascript
小程序中使用css var变量(使js可以动态设置css样式属性)
2020/03/31 Javascript
vue父子组件间引用之$parent、$children
2020/05/20 Javascript
js实现电灯开关效果
2021/01/19 Javascript
Python的函数嵌套的使用方法
2014/01/24 Python
Python学习小技巧之列表项的排序
2017/05/20 Python
Python使用QRCode模块生成二维码实例详解
2017/06/14 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
2017/08/23 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
10行Python代码计算汽车数量的实现方法
2019/10/23 Python
python list等分并从等分的子集中随机选取一个数
2020/11/16 Python
Lulu Guinness露露·吉尼斯官网:红唇包
2019/02/03 全球购物
伊莱克斯阿根廷网上商店:Tienda Electrolux
2021/03/08 全球购物
写出二分查找算法的两种实现
2013/05/13 面试题
绘画设计学生的个人自我评价
2013/09/20 职场文书
新员工培训个人的自我评价
2013/10/09 职场文书
大专毕业生简历的自我评价
2013/10/20 职场文书
人力资源主管的岗位职责
2014/03/15 职场文书
节约能源标语
2014/06/17 职场文书
双拥工作宣传标语
2014/06/26 职场文书
迎新生晚会主持词
2015/06/30 职场文书
员工规章制度范本
2015/08/07 职场文书
利用uni-app生成微信小程序的踩坑记录
2022/04/05 Javascript