有一个问题困扰着我,不知何故,我想不出该怎么办。假设给出了一个数组{9,1,2,4,1,2,2}。数组中的唯一元素是9和4。输出数组应该是{1,2,1,2,2}。我保留顺序和查找重复项的想法是使用一个LinkedHashMap,它将包含条目和条目出现的计数。
问题是维持元素的顺序。一旦我把条目放在hashMap中,命令就会消失。
发布于 2016-01-21 22:27:06
只需计数元素,并检查当前元素的总数是否大于1。
代码示例(C++11):
#include <iostream>
#include <unordered_map>
#include <vector>
int main() {
std::vector<int> to_split = {9, 1, 2, 4, 1, 2, 2};
std::vector<int> unique, not_unique;
std::unordered_map<int, int> counter;
for (int elem : to_split) {
++counter[elem];
}
for (int elem : to_split) {
if (counter[elem] > 1) {
not_unique.push_back(elem);
} else {
unique.push_back(elem);
}
}
std::cout << "Unique: " << std::endl;
for (int elem : unique) {
std::cout << elem << " ";
}
std::cout << std::endl;
std::cout << "Not unique:" << std::endl;
for (int elem : not_unique) {
std::cout << elem << " ";
}
std::cout << std::endl;
return 0;
}输出:
Unique:
9 4
Not unique:
1 2 1 2 2 https://stackoverflow.com/questions/34935410
复制相似问题