【发布时间】:2019-09-25 18:29:15
【问题描述】:
有没有一种快速的方法可以在元素向量中找到所有单个元素(仅出现一次)?向量中的所有元素要么是单一的,要么是双重的(出现两次)。我的答案是对所有元素进行排序,然后删除重复出现的元素。有什么更快的方法吗?
【问题讨论】:
-
是的,如果允许额外的空间。我们可以使用
key as single elements and occurrence as value构建地图,然后遍历地图以查找在您的情况下其值应为 1 的单个元素。 -
所以你想要一个像集合而不是向量的东西?
-
这些元素是什么类型的? int、string 还是用户定义的类型?
-
您输入的预期大小是多少?你的向量持有什么数据类型?你有任何内存限制吗?答案取决于所有这些,尤其是第一个。
-
输入数字的范围是多少?如果它很小,假设您想从数组中找到唯一数字,其中每个数字都在
1 to 100之间,那么您可以创建另一个数组并在索引位置分配标志,例如。seen[ arr [i] ] = 1然后从1 to 100遍历seen数组,然后打印所有元素if seen[ i ] is 1
标签: c++ algorithm c++11 c++14 c++17