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脚本实现Web页面信息交互
Oct 11 Javascript
使用jQuery简化Ajax开发 Ajax开发入门
Oct 14 Javascript
Js控制弹窗实现在任意分辨率下居中显示
Aug 01 Javascript
javascript数组去重方法终极总结
Jun 05 Javascript
javascript实现全角与半角字符的转换
Jan 07 Javascript
javascript实现点击单选按钮链接转向对应网址的方法
Aug 12 Javascript
Node.js重新刷新session过期时间的方法
Feb 04 Javascript
ES6概念 Symbol.keyFor()方法
Dec 25 Javascript
Jquery的autocomplete插件用法及参数讲解
Mar 12 jQuery
react实现antd线上主题动态切换功能
Aug 12 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
Nov 12 Javascript
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
Jan 08 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
PHP设计模式之责任链模式的深入解析
2013/06/13 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
2015/02/02 PHP
jQuery 学习6 操纵元素显示效果的函数
2010/02/07 Javascript
js给onclick事件赋值,动态传参数实例解说
2013/03/28 Javascript
单击浏览器右上角的X关闭窗口弹出提示的小例子
2013/06/12 Javascript
JavaScript实现自动弹出窗口并自动关闭窗口的方法
2015/08/06 Javascript
学习使用bootstrap基本控件(table、form、button)
2016/04/12 Javascript
AngularJS教程 ng-style 指令简单示例
2016/08/03 Javascript
jQuery Easyui datagrid editor为combobox时指定数据源实例
2016/12/19 Javascript
详解Html a标签中href和onclick用法、区别、优先级别
2017/01/16 Javascript
bootstrap table实现合并单元格效果
2018/12/24 Javascript
浅谈layui里的上传控件问题
2019/09/26 Javascript
通过微信公众平台获取公众号文章的方法示例
2019/12/25 Javascript
Vue2.4+新增属性.sync、$attrs、$listeners的具体使用
2020/03/08 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
2020/04/01 Javascript
jQuery 动画与停止动画效果实例详解
2020/05/19 jQuery
swiperjs实现导航与tab页的联动
2020/12/13 Javascript
详解JavaScript编程中的window与window.screen对象
2015/10/26 Python
pycharm+django创建一个搜索网页实例代码
2018/01/24 Python
使用Python微信库itchat获得好友和群组已撤回的消息
2018/06/24 Python
使用python写一个自动浏览文章的脚本实例
2019/12/05 Python
解决pycharm同一目录下无法import其他文件
2020/02/12 Python
深入浅析Python代码规范性检测
2020/07/31 Python
HTML5 canvas基本绘图之绘制矩形
2016/06/27 HTML / CSS
HTML5+JS实现俄罗斯方块原理及具体步骤
2013/11/29 HTML / CSS
C#可否对内存进行直接的操作
2015/02/26 面试题
详解如何解决使用JSON.stringify时遇到的循环引用问题
2021/03/23 Javascript
会计专业求职信
2014/08/10 职场文书
公司离职证明样本
2014/09/13 职场文书
2014年内勤工作总结
2014/11/24 职场文书
2014年新农村建设工作总结
2014/12/01 职场文书
525心理健康活动总结
2015/05/08 职场文书
2016年教师学习教师法心得体会
2016/01/20 职场文书
React实现动效弹窗组件
2021/06/21 Javascript
Redis超详细讲解高可用主从复制基础与哨兵模式方案
2022/04/07 Redis
浅谈css清除浮动(clearfix和clear)的用法
2023/05/21 HTML / CSS