【发布时间】:2020-08-11 18:09:30
【问题描述】:
问题
给定一个整数数组,找出出现奇数次的那个。
总是只有一个整数出现奇数次。
我的尝试
function findOdd(A) {
let newArr = A.sort();
let altArr = [];
let count = 0;
let firstCharacter = newArr[0];
for (let i = 0; i < newArr.length; i++) {
if (newArr[i] == firstCharacter) {
count++;
} else {
let subArr = newArr.slice(newArr[0], count);
console.log(subArr);
altArr.push(subArr);
count = 0;
firstCharacter = newArr[i];
}
}
for (let i = 0; i < altArr.length; i++) {
if (altArr[i].length % 2 != 0) {
return altArr[i][0];
}
}
}
console.log(findOdd([20, 1, -1, 2, -2, 3, 3, 5, 5, 1, 2, 4, 20, 4, -1, -2, 5]))
问题
我使用控制台日志显示切片返回一个空数组,我认为这就是该算法被破坏的原因。但是为什么它返回一个空数组呢?还有我遗漏的其他错误吗?
【问题讨论】:
-
slice()的第一个参数是数组索引。为什么要使用数组元素作为参数? -
我不明白为什么,从逻辑上讲,你需要切片。从逻辑上讲,您似乎只是从 0 循环到 n - 1,抓取元素,并计算它出现的次数。第一个奇怪的你会退回它。对我来说,这并没有说明我需要对数组进行切片。
-
我正在切片,以便我可以取出所有相同的并将它们分组以便于计数。
标签: javascript algorithm