[英]How can I find all indexes of the max value of an array in javascript?
[英]How can I find all first indexes of sequence of consecutive zeroes in an array?
我正在嘗試將指向數組A
中連續 0 序列開頭的所有第一個索引推送到新數組arr
中。 var C
確定序列中 0 的數量。 例如,如果C
為2
,則該算法將查找 00,如果C
為3
,則該算法將查找 000,依此類推。 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
嘗試:
function S(A, B, C) {
var arr = [];
for (var i = 0; i < B; i++) {
for (var j = 0; j <= C; j++) {
if ((A[i] == 0) && (A[i + j] == 0) && !arr.includes(i)) {
arr.push(i);
}
}
}
console.log(arr);
return -1;
}
通過這個簡單的添加 if,您可以檢查該值是否已經在您的數組中。
首先,我想建議您使用更具描述性的變量名稱。 您需要描述它們中的每一個的含義這一事實意味着它們的描述性不夠。
此外,您的變量N
似乎是多余的,因為 arrays 已經有一個.length
屬性,您可以使用它來查看其中有多少元素。
您的錯誤來源似乎是您使用了嵌套循環。 無需使用嵌套循環。 您只需要 go 一次通過所有元素並跟蹤重復的零。 每次遇到非零值時,都會將序列計數重置為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));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.