如何找到数组中连续零序列的所有第一个索引?

娜斯佳·康德拉希娜

我试图将指向数组中连续 0 序列开头的所有第一个索引推A送到新数组中arrvar C确定序列中 0 的数量。例如,如果C2,算法将寻找 00s,如果C3,它将寻找 000s,依此类推。N是数组的长度A该算法似乎有效,但由于某种原因,新数组arr的值是重复的

var A = [1, 0, 0, 1];
var N = 4;
var C = 1;

function S(A, N, C) {
  var arr = [];
  for (var i = 0; i < N; i++) {
    for (var j = 0; j <= C; j++) {
      if ((A[i] == 0) && (A[i + j] == 0)) {
        arr.push(i);
      }
    }
  }
  console.log(arr);
  return -1;
}

/// console result:
Array(5)
0: 1
1: 1
2: 2
3: 2

//Expected:
0: 1
1: 2


伊瓦尔

首先,我建议您使用更具描述性的变量名称。您需要描述它们各自的含义这一事实意味着它们的描述性不够。

此外,您的变量N似乎是多余的,因为数组已经具有一个.length属性,您可以使用属性查看其中有多少元素。

您的错误来源似乎是您使用了嵌套循环。不需要使用嵌套循环。您只需要遍历所有元素一次并跟踪重复的零。每次遇到非零值时,都将序列计数重置为0如果确实遇到零,则增加序列计数,然后检查序列计数是否等于作为参数传递的零的数量。在这种情况下,您希望将第一个索引推送到结果数组并0再次将序列计数重置为

function getFirstIndexesOfSequenceOfConsecutiveZeroes(input, numberOfRepeatedZeroes) {
  if (numberOfRepeatedZeroes <= 0) {
    throw new Error("numberOfRepeatedZeroes need to be 1 or higher");
  }

  var firstIndexes = [];

  let sequenceStartIndex;
  let sequenceCount = 0;
  for (var i = 0; i < input.length; i++) {
    if (input[i] !== 0) {
      sequenceCount = 0;
    } else {
      if (sequenceCount == 0) {
        sequenceStartIndex = i;
      }

      sequenceCount++;
    }

    if (sequenceCount === numberOfRepeatedZeroes) {
      firstIndexes.push(sequenceStartIndex);
      sequenceCount = 0;
    }
  }

  return firstIndexes;
}

let input = [1, 0, 0, 1];
let numberOfRepeatedZeroes = 1;

console.log(getFirstIndexesOfSequenceOfConsecutiveZeroes(input, numberOfRepeatedZeroes));

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

找到第一个索引,使所有连续元素均为零

如何删除数组中除第一个索引之外的所有内容?

如何找到序列中多个“基序”的第一个索引?

如何确定一组有序列中的第一个零?

在数据帧中连续零之后找到第一个数字

如何获取ng-repeat中数组所有索引的第一个元素的和?

如何在列表中找到连续重复数字的第一个索引?

如何找到一个数组在另一个数组中的出现?和第一个数组的返回索引

任务是找到数组中不连续的第一个元素

如何获取数组中的第一个非零值和最后一个非零值索引?

如何加入数组中除第一个元素之外的所有元素?

在具有最小索引的数组中找到第一个重复元素

如何在多个数组中找到最大值并返回java中第一个索引的值?

获取NumPy数组中的连续命中数及其第一个/最后一个索引

在数组中查找序列的第一个索引

对于数组中的每个重复项,找到第一个重复项的索引

删除数组中的第一个零

如何选择所有<tr>中的所有第一个td到数组中

如何检查数组数组的第一个索引

识别Pandas DataFrame每行中的第一个和所有非零值

如何提取数组的第一个找到的元素?

获取布尔数组中至少n个连续False值的第一个块的索引

当第一个数字表示最后一个索引时如何找到数组中的最大差异

如何找到字符串中第一个元音的索引?

如何有效地找到与第二个数组值匹配的第一个数组值的索引?

如何仅解构数组的第一个索引

获取R中连续增加的数字的长度N的第一个序列的第一个元素

熊猫将所有0移除,直到多级索引中每个级别的第一个非零值

返回列表中第一个元素的所有索引,其中后续值递增