gpt4 book ai didi

javascript - 从数组 A 获取数组 B 的正确算法应该是什么

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:29:44 24 4
gpt4 key购买 nike

数组 A= [1,0,1,1,1,1,0,1,1]];结果将是 B B=[1,0,4,3,2,1,0,2,1];给定 A 的元素,结果将是 B。A中的元素只能是0和1。我们需要从 A 中的最后一个元素向后计数,如果有连续的 1,则 A 和 B 中的元素将为 1,但对于 A 中的第 2 个连续的 1,它将在 be 中为 2,对于 A 中的第 3 个元素,则为元素在 B 中将是 3但是对于 0 它将是 0。我尝试了以下方法,但没有得到输出。

<script>

var A= [1,0,1,1,1,1,0,1,1]];
var B =[];
//var B= A.length;

var lastValueOne;
var consecutiveOnes = 0;

for (i = A.Length - 1; i >= 0; i--)
{
if ( lastValueOne== false)
{
consecutiveOnes = 0;
B[i] = 0;
}
else
{
consecutiveOnes++;
B[i] = consecutiveOnes;
}

if (A[i] == 1)
{
lastValueOne = true;
}

else
{
lastValueOne = false;
}
}

//console.log(B[i]);
document.getElementById("demo").innerHTML = B;

最佳答案

如果在实际索引处给出真值,您可以迭代给定数组并映射计数值。然后迭代直到找到一个虚假值并返回计数。

var array = [1, 0, 1, 1, 1, 1, 0, 1, 1],
result = array.map(function (_, i, a) { // take only index and array as parameter
var count = 0; // declare and initialize counter with zero
while(a[i++]) { // check value at actual index and inc index
count++; // increment counter while true/truthy
}
return count; // return count
});

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

感动le_m的想法的 answer在不使用 sum 变量和使用结果数组 r[0] 的第一个元素来保持累积和的情况下提前一点。

var array = [1, 0, 1, 1, 1, 1, 0, 1, 1],
result = array.reduceRight(function (r, a) {
return [a && (r[0] || 0) + a].concat(r);
}, []);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 从数组 A 获取数组 B 的正确算法应该是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43834667/

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