数组中数字序列的计数

帕斯卡

如果我有一个看起来像的数组

[0, 2, 4, 10, 10, 10, 10, 2, 5, 3, 2, 10, 10, 5, 7, 4, 10, 10, 10, 10]

10's如果该序列至少出现3次,我该如何计算我们看到该序列的次数。

因此,在这种情况下,输出将是2因为有2个10的顺序,每个连续有10个。

const values = [0, 2, 4, 10, 10, 10, 10, 2, 5, 3, 2, 10, 10, 5, 7, 4, 10, 10, 10, 10];
const MAX = 10;
const threshold = 3;
let count= 0;

let numberInSeq = 0;

values.forEach(x => {
  if (x === MAX) {
    numberInSeq++;
  } else {
    if (numberInSeq >= threshold) {
      count++
    }
    numberInSeq = 0;
  }
})
return count;

这是我目前拥有的,我相信它应该可以工作,但是我觉得有一种更优化的方法可以做到这一点。

谢谢!

马库斯·帕森斯

forEach循环中有一些小错误如果当前值与检查值匹配(即MAX您的情况),则需要检查阈值,如果达到阈,则需要重置numberInSeq阈值。这样可以正确计数序列。我还sequenceFound为长序列添加了一个flagger变量,因此它们的计数不会超过一次。

这种方法的优势在于它是一次通过,这意味着在Big O表示法中,它仅是O(n)复杂性,而不是多次通过解决方案。

var sequenceFound = false;

values.forEach(x => {
  if (x === MAX) {
    numberInSeq++;
    if (numberInSeq >= threshold && sequenceFound === false) {
      count++;
      sequenceFound = true;
      numberInSeq = 0;
    }
  } else {
    numberInSeq = 0;
    sequenceFound = false;
  }
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在JavaScript数组中检查数字序列的最有效方法是什么?

Javascript将具有连续数字序列的数组中的数字分组

如何从数组中提取数字序列?

将数字转换为单元格数组行中的数字序列

数组的最长递增数字子序列

快速比较数组中连续数字及其计数

在O(log n)时间中对已排序的int数组中的相同数字进行计数

从数组数组中获取计数

将数字序列(不在任何数据结构中)转换为数组

从指向字符的指针数组中的字符串中保存数字(数字序列)

从数组中的集合中计数数字文档

在C中不使用数组即可找到最长的数字序列

查找序列中缺少的数字

C中的数字计数

数字序列中的最低可用数字

如何获取数组中相似数字的计数

如何从Excel中的序列中提取和计数文本或数字字符?

如何创建一个计数函数来对另一个函数中一个序列中的数字进行计数?

字符数组中的数字计数随Java中的相同输入而变化

如何根据数据数组中的计数字段对数据进行排序?

如何将计数数字添加到数据数组中:Doctrine

将数字序列保存到数组

从序列中打印缺失的数字

如何矢量化计数比 numpy 数组中的当前最大值更小的数字?

如何检查数组是否在Java中增加数字序列?

查找给定数组中重复数字的计数并将输出作为对象返回

计算数组中的数字序列?

MongoDB如何使用文档数组中的元素数更新计数字段

序列化 DRF 中的自定义计数字段