以一个长度为n的数组array里面的所有数字都在0到n-1范围内,写一个函数,清除数组中的重复数字,c++完整代码
时间: 2024-09-12 15:02:29 浏览: 44
你可以使用哈希集合(HashSet)或者位运算来解决这个问题。这里是一个使用C++的HashSet实现的示例:
```cpp
#include <unordered_set>
#include <vector>
std::vector<int> removeDuplicates(std::vector<int>& nums) {
std::unordered_set<int> uniqueSet; // 使用哈希集合存储唯一数字
for (int num : nums) { // 遍历数组
uniqueSet.insert(num); // 将唯一的数字插入集合
}
// 把集合转回数组
std::vector<int> result(uniqueSet.begin(), uniqueSet.end());
return result;
}
int main() {
std::vector<int> nums = {0, 1, 2, 2, 3, 3, 4, 4, 4, 5};
nums = removeDuplicates(nums);
for (int num : nums) {
std::cout << num << " ";
}
return 0;
}
```
在这个函数中,我们创建了一个`unordered_set`,它自动处理了重复的问题,当我们试图添加一个新的元素时,如果该元素已经存在,那么set不会增加大小。最后,我们将集合转换回一个标准的整数向量。
阅读全文