当前位置: 首页 > 编程笔记 >

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

黄仲渊
2023-03-14
本文向大家介绍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

    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]

 类似资料:
  • 问题内容: 假设我在numpy数组中有一堆数字,并且根据返回布尔数组的条件对它们进行了测试: 并使用此布尔数组,我想计算True连续出现的所有长度。例如,如果我有,我想回去。 我可以使用以下代码来做到这一点: 但是是否已经为此或python,numpy,scipy等函数实现了任何功能,该函数计算给定输入在列表或数组中连续出现的长度? 问题答案: 这是使用的解决方案(可能不是最快的解决方案):

  • 我有一个数据帧: 而我的目标是找到最长的连续增长期。它应该返回:老实说,我不知道从哪里开始。这些是我在熊猫的第一步,我不知道我应该使用哪些工具来获得这些信息。 有谁能帮我/给我指明正确的方向吗?

  • 我为这个问题写了一个方法:输入:整数数组返回:最长连续整数序列的长度。like:对于{9,1,2,3},返回3,因为{1,2,3} 这个方法运行得不好。希望有人能帮我调试。 非常感谢!!!

  • 本文向大家介绍使用JavaScript中的while循环查找最长的连续数字子数组,包括了使用JavaScript中的while循环查找最长的连续数字子数组的使用技巧和注意事项,需要的朋友参考一下 我们需要编写一个带有while语句的函数,该函数确定正整数数组中最大的连续子数组的长度。 例如- 如果输入数组是- 那么输出应该是- 如果输入数组是- 那么输出应该是- 因此,让我们为该函数编写代码- 示

  • 我想显示给定数组int中的所有连续序列。最后,我想用文本显示最长的序列。 我对数组进行了排序,找到了所有序列 以下仅是一小段代码,因为我知道其余部分不起作用: 我尝试了许多不同的方法,但无法弄清楚。

  • 问题内容: 对于这个例子说,我有两个字段的表,和。 该表具有以下数据 我想回来 我想返回的结果是每个区域递增连续值的最长长度。对于。 我将如何在MS Sql 2005上执行此操作? 问题答案: 一种方法是使用遍历每一行的递归CTE。如果该行符合条件(增加同一区域的订单号),则将链长增加一。如果没有,则启动一个新链: SQL Fiddle的实时示例。 另一种方法是使用查询查找“中断”,即以相同区域的