给定含有 个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的数,只保留该数第一次出现的位置,删除其余位置。C++
时间: 2024-09-07 07:01:56 浏览: 32
在C++中,你可以使用STL中的set数据结构来实现序列去重,因为set是一个不允许重复元素的集合。以下是简单的步骤:
1. 创建一个名为`unordered_set<int>`的新容器,它自动去重并保持元素的顺序(如果输入的原序需要保持的话)。
2. 遍历原始序列,同时插入到set中。
3. 再次遍历set,将每个元素的索引添加到新序列中,记录下首次出现的位置。
4. 最后,返回包含唯一元素及其首次出现位置的新序列。
下面是一个示例代码:
```cpp
#include <vector>
#include <unordered_set>
std::vector<std::pair<int, int>> removeDuplicates(std::vector<int>& nums) {
std::unordered_set<int> uniqueSet;
std::vector<std::pair<int, int>> result;
for (size_t i = 0; i < nums.size(); ++i) {
if (uniqueSet.find(nums[i]) == uniqueSet.end()) {
uniqueSet.insert(nums[i]);
result.push_back({nums[i], i});
}
}
return result;
}
```
在这个例子中,`result`是一个二维向量,第一项是数字,第二项是其首次出现的索引。如果你只需要保存数字并且不需要索引,可以直接去掉`std::pair`。
阅读全文