2.删除数组中所有重复元素 输入样例: 5 1 3 1 2 3 输出样例: 1 3 2 c++ vector <int>,push_back,erase()方法实现
时间: 2024-09-21 10:12:21 浏览: 19
在C++中,我们可以使用`vector`容器以及`push_back()`方法添加元素,并通过`erase()`方法删除重复元素。一种常见的做法是遍历整个向量,对于每个元素,检查它之后是否有相同的元素,如果有则使用`erase()`方法移除后续的重复项。以下是这个过程的一个简短示例:
```cpp
#include <iostream>
#include <vector>
#include <unordered_set>
void removeDuplicates(std::vector<int>& nums) {
std::unordered_set<int> uniqueSet; // 使用无序集合存储唯一元素
for (size_t i = 0; i < nums.size(); ++i) {
if (uniqueSet.find(nums[i]) == uniqueSet.end()) { // 如果元素不在集合中
uniqueSet.insert(nums[i]); // 添加到集合中并保留
nums.erase(nums.begin() + i); // 移除当前索引处的重复元素
i--; // 因为元素数量减少,需要调整下一次循环的起点
}
}
}
int main() {
int n;
std::cin >> n;
std::vector<int> nums(n);
for (size_t i = 0; i < n; ++i)
std::cin >> nums[i];
removeDuplicates(nums);
// 输出结果
for (const auto& num : nums)
std::cout << num << " ";
std::cout << "\n";
return 0;
}
```
在这个例子中,我们先创建了一个`std::unordered_set`来存储唯一的整数。然后遍历输入的`vector`,如果遇到的元素还未出现在集合中,就将其加入集合并且保持在`vector`中。如果遇到重复元素,我们就从`vector`中移除它。