【发布时间】:2019-06-16 18:51:49
【问题描述】:
我正在做这个任务,我需要找到一个在数组中出现奇数次的数字。
我相信我几乎已经完成了,但是如果某个数字连续出现多次(例如 [1,1,3,1,1] 中的 1),它将始终返回该数字,无论它是否出现奇数次与否。
function findOdd(A) {
var a;
var count = 0;
for (var i = 0; i < A.length; i++) {
a = A[i];
for (var l = i + 1; l < A.length; l++) {
if (a == A[l]) {
count++;
}
}
if (!(count % 2)) {
break;
} else {
count = 0;
}
}
return a;
}
console.log(findOdd([ 1, 1, 2, -2, 5, 2, 4, 4, -1, -2, 5 ]));
如果 [i] = [i+1],我尝试使用加 1 来计数,但没有奏效。
我希望findOdd([1, 1, 2, -2, 5, 2, 4, 4, -1, -2, 5]) 的输出是-1,但它是1。该函数总是返回恰好等于数组的下一个元素的第一个数字。
【问题讨论】:
-
@NinaScholz 也许我理解错了,但它不能是负数,我的输出应该不是计数,而是出现奇数次的整数,所以计数总是正数
-
你的计数方式坏了。当您到达第二个
1时,您会计算在那之后有多少个,这是零。所以你的算法认为它只发生一次——奇数次。要按照您的方式执行此操作,您需要在两个循环中遍历整个数组。
标签: javascript