JavaScript实现找出数组中最长的连续数字序列
2014-09-03 10:18
1321 查看
原始题目:
给定一个无序的整数序列, 找最长的连续数字序列。
例如:
给定[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实现)
- 编程实现:从字符中获取连续数组序列,如字符串"a1dl2iad9j3la5kudp7u9pn4blj8ap5u3e6ml9a"中可以得到的连续数字序列为1234556.【注】:只考虑一位,因此最长的数
- 数组中的最长连续序列---dp实现
- java实现list清除重复的字符串;arraylist动态数组;角谷定理最终得1,找出10000以内哪个数字的步骤最长
- 找出字符串中找出连续最长的数字串代码实现及思路
- 给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱). 第二解
- 在字符串中找出连续最长的数字串(python实现)
- O(n)时间找出无序数组中最长的连续递增序列
- 41 - 找出数组中和为sum的 2个数字 | 找出和为sum的连续正整数序列
- 给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱).
- 找出以100万以下的数字开始的最长序列。
- 在字符串中找出连续最长的数字串
- 在字符串中找出连续最长的数字串,并把这个串的长度返回
- 字符串中找出连续最长的数字串
- 在字符串中找出连续最长的数字串(25)
- 第25题: 写一个函数,它的原形是int continumax(char *outputstr,char *intputstr),在字符串中找出连续最长的数字串,并把这个串的长度返回
- 在字符串中找出连续最长的数字串,并把这个串的长度返回