JavaScript实现列出数组中最长的连续数

   原始题目:

  给定一个无序的整数序列, 找最长的连续数字序列。

  例如:

  给定[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]

时间: 2024-10-21 05:16:20

JavaScript实现列出数组中最长的连续数的相关文章

JavaScript实现列出数组中最长的连续数_javascript技巧

原始题目: 给定一个无序的整数序列, 找最长的连续数字序列. 例如: 给定[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 parseLo

JavaScript实现找出数组中最长的连续数字序列_javascript技巧

原始题目: 给定一个无序的整数序列, 找最长的连续数字序列. 例如: 给定[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 parseRe

运用javascript如何去除数组中重复的数字或者字符串?

问题描述 运用javascript如何去除数组中重复的数字或者字符串? 运用javascript如何去除数组中重复的数字或者字符串?谢谢了.方法越多越好,谢谢. 解决方案 JavaScript实现数组去除重复整理 javascript 去除数组中重复项的几种方法 解决方案二: 本人只会用JAVA写

JavaScript实现将数组中所有元素连接成一个字符串的方法_javascript技巧

本文实例讲述了JavaScript实现将数组中所有元素连接成一个字符串的方法.分享给大家供大家参考.具体如下: 下面的代码演示了JS中如何通过数组对象的join方法将数组元素连接成一个字符串输出 <!DOCTYPE html> <html> <body> <p id="demo"> Click the button to join the array elements into a string. </p> <butto

利用Collections工具类获取字符串数组中最长的元素

package cn.com; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; //要求:获取字符串数组中最长的元素 //在这里要利用Collections的另一个max方法 //public static <T> T max(Collection<? extends T> coll, Comparator<?

求数组中最长递增子序列的解决方法_C 语言

存储扩展算法n2编程c 写一个时间复杂度尽可能低的程序,求一个一维数组(N个元素)中的最长递增子序列的长度.例如:在序列1,-1,2,-3,4,-5,6,-7中,其最长的递增子序列为1,2,4,6 或者 -1,2,4,6.(编程之美P198-202)分析与解法根据题目的要求,求一维数组中的最长递增子序列,也就是找一个标号的序列b[0],b[1],-,b[m](0 <= b[0] < b[1] < - < b[m] < N),使得array[b[0]]<array[b[1

javascript 随机抽取数组中一值

从数组 m 中随机取出 n 个值,看代码:  代码如下 复制代码 var m = [1,2,3,4,5,6,7,8,9,'a','b','c','d','e','#']; function randArray(m, len) {     m.sort(function () {         return Math.random() - 0.5;     });     return m.slice(0, len); } console.log(randArray(m, 4)); 从数组 m

JavaScript实现从数组中选出和等于固定值的n个数_javascript技巧

现实生活中的问题,可能会抽象为这样一种数据模型: 从一个数组中挑选出几个数,让这几个数相加的和为指定的值. 大多数读者应该有过网购的经历,网购一般会有个凑单功能,假如读者买了70元的商品,但是必须满100元才能包邮,这时系统会自动推荐一些商品,加起来差不多就100块钱了. 系统如何确定推荐哪些商品呢?这其实就是刚刚提到的模型,我们可以把热销商品的价格放到一个数组中,然后利用算法,找出数组中哪些价格的和为30元. 废话少说,小菜给大家分享一个JavaScript版本的算法实现. 算法代码: fun

JavaScript实现在数组中查找不同顺序排列的字符串

  需求描述:从一组数组中找出一组按不同顺序排列的字符串的数组元素.假如有这样一个数组: 代码如下: [ 'abcd', 'hello', 'bdca', 'olleh', 'cadb', 'nba', 'abn', 'abc' ] 需要找出的结果是: 代码如下: [ 'abcd', 'bdca', 'cadb' ] 那么这里的关键点是判断一组字符串是否是否只是字符的顺序不同,只要解决整个关键点其他都好办了. 方法1: 代码如下: var stringClassify = function( a