我遇到了以下问题:
“查找数组中出现奇数次的所有元素。”
我的想法是:
1. 使用HashMap:将数组中的值作为HashMap中的键添加。每个键对应的值将是该键遇到的次数。
2. 使用快速排序在O(N log N)内对数组进行排序,然后遍历数组以检查哪些元素出现了奇数次。
你认为还有其他方法吗?如果没有,那么这两种方法中哪一种更好?
提前感谢!
“查找数组中出现奇数次的所有元素。”
我的想法是:
1. 使用HashMap:将数组中的值作为HashMap中的键添加。每个键对应的值将是该键遇到的次数。
2. 使用快速排序在O(N log N)内对数组进行排序,然后遍历数组以检查哪些元素出现了奇数次。
你认为还有其他方法吗?如果没有,那么这两种方法中哪一种更好?
提前感谢!
HashSet
而不是HashMap
?HashSet
避免重复元素的优势对我们来说并没有太大帮助,因为我们无论如何都要搜索该元素,如果找到了就会删除,否则就添加。 - VikramHashMap
可以存储显式计数。在Java中,这意味着存储一个包装整数,你只需要它的最后一位(决定它是偶数还是奇数),而且你将要丢弃它。在其他语言中,当你只需要一个比特位时,仍然会存储完整的整数,这是浪费的。 - Sergey Kalinichenko