gpt4 book ai didi

javascript - 查找奇偶异常值 Javascript

转载 作者:行者123 更新时间:2023-12-01 16:04:33 24 4
gpt4 key购买 nike

当答案仅为负奇数时,我的函数失败(返回未定义)。否则它会起作用。谁能看出原因?

说明:

You are given an array (which will have a length of at least 3, but could be very large) containing integers. The array is either entirely comprised of odd integers or entirely comprised of even integers except for a single integer N. Write a method that takes the array as an argument and returns this "outlier" N.

我的代码:

function findOutlier(integers) {
let binary = integers.map((int, i) => int % 2);
let count = 0;
for (let i = 0; i < binary.length; i++) {
if (binary[i] == 0)
count++;
}
if (count > 1) {
return integers[binary.indexOf(1)]
} else {
return integers[binary.indexOf(0)]
}
}

最佳答案

JavaScript % 运算符在某些情况下返回负数(当左侧为负而右侧为正时)。因此,您的 .indexOf(1) 不会在数组中找到 -1

您可以在 .map() 回调中使用 (i) => i & 1 直接检查最低有效位来修复它。

如果是我,我会将作业中数组可能“非常大”的警告解释为应该最小化迭代的警告。因此,我很想以不同的方式处理这个问题。一旦看到多个偶数或多个奇数,您就可以假设第一个不符合模式的数字是离群值。 (哦,我突然想到数组总是至少有 3 个元素的规定是对所需解决方案的另一个暗示:你只需要检查前 3 个元素来确定输入数组是几乎全偶数还是几乎全是奇数。)

所以也许是这样的:

function outlier(integers) {
function par(i) { return i & 1; }

let parity = par(integers[0]);
if (parity != par(integers[1])) {
if (parity == par(integers[2]))
// [0] and [2] are the true parity so [1] is the outlier
return integers[1];

// [1] and [2] are the true parity so [0] is the outlier
return integers[0];
}
return integers.find((i) => par(i) != parity);
}

关于javascript - 查找奇偶异常值 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59553445/

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