首页 > 解决方案 > 查找数组中单个数字的最长连续拉伸的长度

问题描述

以下是问题的完整描述:

//编写一个函数,它接受一个数字列表并返回单个数字的最长连续拉伸的长度。例如,在输入 [1,7,7,3] 上, // 正确的返回是 2,因为连续有两个 7。在输入 // [1,7,7,3,9,9,9,4,9] 上,正确的返回是 3,因为连续三个 9。

这是我的解决方案:

let sequenceChecker = (arr) => {

  let finalNum = 0;
  let secondPass = false;

  const bigestNumber = arr.sort()[arr.length - 1]
 
 arr.forEach(num => {

  if(num === bigestNumber){
     finalNum++  
  }

  else if(num != bigestNumber && finalNum > 0 ){
     secondPass = true
    
  }

  else if (secondPass == true && num === bigestNumber){
   finalNum = 0
  } 

 })
  return finalNum
}

console.log((sequenceChecker([1,7,7,3])).toString());

console.log((sequenceChecker([1,7,7,3,9,9,9,4,9])).toString());

我真的不明白为什么我的代码不能解决这个问题。第一个 else if 语句永远不会被执行,但该语句的计算结果应该为 true,并且里面的代码应该执行。

标签: javascript

解决方案


试试这个:我用前一个检查序列的数量 e 增加变量中的计数

var arr = [1,7,7,3,9,9,9,4,4,4,4,4,4,9,9,9,9,9,9,9];
    
var prev; 
var count=0; 
var finalnum=0;

$.each(arr, function(index,num){

  if(prev != num) {
    prev = num;
    finalnum = (finalnum <= count ? count : finalnum);
    count = 1;
  }
  else {
    count = count + 1;
  }
  
  if(index == (arr.length - 1))
  {
    finalnum = (finalnum <= count ? count : finalnum);
  }    

});
console.log(finalnum);

推荐阅读