【发布时间】:2012-10-09 15:00:48
【问题描述】:
我无法为我遇到的地图矢量问题想出一个有效的算法。
假设我有一个 map
关键值
1 -
2 -
3-
在这种情况下,如果 4 出现超过 3 次,我想从所有向量中删除它。生成的地图如下所示:
1 -
2 -
3-
我正在为这个问题寻找一种有效的算法,只是想知道是否有人有任何想法。 (我在 C++ 中工作,但我知道 java 或伪代码很酷)。
感谢您的帮助
请注意,仅在此示例中,向量在现实生活中并未排序。
【问题讨论】:
-
假设您没有反向映射(整数到键),我认为您唯一的选择是从头到尾一个接一个...
-
@lc 我自己也是这么想的,但是如果他需要删除多个数字(例如 4 和 6 和 8),那么首先构建一个单独的数据结构不是更有效吗?然后全部删除?
-
为什么不使用
std::multimap<int, int>? -
在您的示例中,向量已排序。这是规定吗?
-
@vlad 是的,我想这是给 Nark 的一个问题:计数和删除操作是否只会执行一次,还是必须删除多个数字?