【发布时间】:2012-03-24 15:44:36
【问题描述】:
如何在 O(1) 的有序数组中找到不同元素的数量? 在 C++ 中使用多映射容器 (STL)。 我的意思是 O(1) 完全正确。
【问题讨论】:
-
我认为你的意思是 O(n),O(1) 需要先见之明,除非你在向数组中添加/删除元素时跟踪这一点,然后,你并不是真的“发现" 与其归还一样。
-
你不能,因为你不知道有多少条目共享同一个键。如果您使用的是普通映射,则唯一条目的数量是键的数量,但是在多映射(这与数组不同,顺便说一句)中,您可以拥有任意数量的共享相同的条目钥匙。我假设“不同的元素”实际上是指“不同的键”,但是如果您谈论的是实际元素并且没有其他强制元素不存储两次的东西,那么问题是相同的。如果你这样做了,那么答案就是条目数。
-
@tvanfosson 这对我来说似乎是一个正确的答案。
-
@CaptainGiraffe - 我正在写一个更广泛的解释。