javascript - 在 JavaScript 数组中找到唯一唯一值的最佳方法是什么

标签 javascript algorithm

<分区>

根据时间复杂度在数组中找到唯一唯一值的最佳(有效)方法是什么。

示例:

  • findUniq([2​​, 1, 1, 1, 1, 1]) 应该返回 2

  • findUniq([3, 4, 3, 3, 3, 3, 3, 3, 3]) 应该返回 4

    /li>

约束:

该数组有超过 2 个值开始。

数组只有数字。

数组只有一个唯一值,如[1, 7, 1, 1]或[4, 2, 2, 2]

[3, 4, 5, 3] 不是有效输入。

我想知道是否可以使用 Set 来解决这个问题。

这是一个for循环的解决方案,我不确定这个解决方案是否会通过所有场景。

 let findUniq = (arr) => {
  for(let i = 0; i < arr.length; i++) {
    if (arr[i] !== arr[0]) {
      return arr[i]
    }
  }
}

最佳答案

您可以使用find 方法检查indexOf 是否等于lastIndexOf。它将返回第一个匹配项并停止循环。

const uniq = arr => arr.find((e, i) => arr.indexOf(e) == arr.lastIndexOf(e));

console.log(uniq([3, 4, 3, 3, 3, 3, 3, 3, 3]));
console.log(uniq([1, 2, 3, 1, 2]));
console.log(uniq([2, 1, 1, 1, 1, 1]));

关于javascript - 在 JavaScript 数组中找到唯一唯一值的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50891061/

相关文章:

c - 如何将整数数组转换为排列并计算其中的循环?

javascript - for 循环中的延迟会中断函数

javascript - 为什么我的动画不起作用?

javascript - 签名脚本进行跨域查询

javascript - 将今天的日期与日期列表进行比较

c - 哪种计算 nCr 的方法更好

javascript - 是否记录了 Android 的 JavaScript 环境?

c# - 按特定顺序分配资金

c++ - 为什么我的中位数中位数快速选择算法段错误?

python - 在 Python 中实现深度优先树迭代器