gpt4 book ai didi

算法:查找恰好出现两次的元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:31:48 26 4
gpt4 key购买 nike

输入一个未排序的整数数组A[1..n]只有 O(d) :(d < < n)不同的元素。

输出所有恰好出现两次的元素。

要求两种算法,一种是O(Nd)和另一个O(Nlogd) .最大数量可能非常大,因此大小为 n 的数组计算频率可能不是一个好主意。有什么想法吗?

澄清一下,“只有 O(d) :(d < < n) 个不同的元素”是指所有其他元素(不是那些 O(d) 个元素)出现了两次或更多次。

最佳答案

O(nd) 基本上是迭代所有可能的元素(O(d) of those)并计算它重复的次数。每次迭代都是 O(n)

O(nlogd)构建一个histogram (map:int->int) 计算每个元素在单次迭代中出现在列表中的次数。 map 是balanced Binary Search Tree基于确保 O(nlogd)。请注意,如果您使用 hash map代替树,它可以增加到 O(n) 平均情况(但 O(nd) 最坏情况)

伪代码 - O(nlogd):

map <- new tree map
for each element x in list:
if x is in map:
map.put(x,map.get(x)+1)
else:
map.put(x,1)
for each (key,value) in map:
if value == 2:
print key

关于算法:查找恰好出现两次的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14137586/

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