javascript - 查找奇偶异常值 Javascript

标签 javascript arrays

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

说明:

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/

相关文章:

javascript - Angular 1 将数据绑定(bind)到脚本模板

javascript - ES6 如何检查对象的每个键和值是否为 null 或未定义?

javascript - React Redux 组件如何订阅状态变化

python - 在带有 pytorch 数据加载器的开始和结束的 zarr 数组上创建生成器

.net - 在 vb.net 中对字符串数组进行洗牌

javascript - 将自定义 xtype 小部件渲染到容器

javascript - 如何根据用户选择的选项更改链接 href (onclick)

使用带有长字符串 Json 的 System.IO.StreamWriter 的 C# 文件限制

java - 数组唯一元素和移动应用程序数据结构

PHP 内部数组