gpt4 book ai didi

javascript - 数组中数字序列的计数

转载 作者:行者123 更新时间:2023-11-29 10:27:46 25 4
gpt4 key购买 nike

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

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

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

所以在这种情况下,输出将是 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,这样它们就不会被多次计算。

此方法的优势在于它是单次传递,这意味着在 Big O Notation 中,与多次传递解决方案相比,它的复杂度仅为 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;
}
});

关于javascript - 数组中数字序列的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54560231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com