arrays - 查找数组中出现奇数次的所有元素

标签 arrays algorithm search data-structures hashmap

我遇到了以下问题:

'找出数组中出现奇数次的所有元素'。

我对此的看法是:

  1. 使用HashMap:将数组中的值添加为HashMap 中的键。每个键对应的值将是遇到该键的次数。

  2. 在 O(N log N) 中使用快速排序对数组进行排序,然后遍历数组以检查哪些元素出现奇数次。

您怎么看,还有其他方法吗?如果不是,那么这两种方法中哪种更好?

提前致谢!

最佳答案

您可以修改您的第一种方法以使用哈希集而不是 HashMap 。

创建一个最初为空的哈希集。遍历数组的元素。对于每个元素,检查哈希集合:如果当前数组元素不在集合中,则添加它;否则,将其删除。

当您到达数组的末尾时,您的哈希集将包含在您的数组中出现奇数次的每个对象。

由于访问哈希集中的元素是 O(1),因此该算法具有 O(N) 时间复杂度。

关于arrays - 查找数组中出现奇数次的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19795069/

相关文章:

php - 将函数输出数组的一个键紧密地分配给变量?

c++ - 比较不包括标点符号和空格的字符串

algorithm - 使用另一种算法修复 Perlin 噪声产生的方向性伪影

algorithm - 算法复杂度的 Big Oh 表示法

php - 使用 Solr 匹配相似单词的单词?

javascript - 当用户单击键盘上的 Enter 时触发按钮单击

c - 在 C 中使用字符串数组时出现段错误

arrays - 使用 Google Sheets 过滤器减去数组(设置差异)

python - 在Python中将整数从argv传递到数组中

c# - 在 C# 中寻找高性能的最佳数据结构