sách gpt4 ai đã đi

Thuật toán: Tìm các phần tử xuất hiện chính xác hai lần

In lại 作者:塔克拉玛干 更新时间:2023-11-03 06:31:48 26 4
mua khóa gpt4 Nike

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

Đầu ra所有恰好出现两次的元素。

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

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

1 Câu trả lời

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

O(nlogd) Đúng构建一个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)
khác:
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
Bài viết được đề xuất: c# - 在不使用临时内存的情况下从列表中删除重复项
Bài viết được đề xuất: algorithm - 修改后的 VlookUp 返回与查找值对应的第 k 个值
Bài viết được đề xuất: c - 如何理解子集和问题
Bài viết được đề xuất: ruby 嵌套哈希
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com