c++两数组留下不重复元素
时间: 2023-11-16 14:04:27 浏览: 36
你可以通过使用集合(Set)来实现两个数组的元素去重。首先,将两个数组转换为集合,然后取两个集合的差集,即可得到不重复的元素。
以下是一个示例代码:
```python
def find_unique_elements(arr1, arr2):
set1 = set(arr1)
set2 = set(arr2)
unique_elements = set1.difference(set2).union(set2.difference(set1))
return list(unique_elements)
arr1 = [1, 2, 3, 4, 5]
arr2 = [4, 5, 6, 7, 8]
unique_elements = find_unique_elements(arr1, arr2)
print(unique_elements) # 输出 [1, 2, 3, 6, 7, 8]
```
在上面的代码中,`find_unique_elements`函数接受两个数组作为参数,首先将数组转换为集合,然后使用集合的差集操作符`difference`来获取不重复的元素,最后将结果转换回列表并返回。
相关问题
c++查找数组中的重复元素
可以使用哈希表或者排序来查找数组中的重复元素。
使用哈希表的方法:
1. 遍历数组,将数组中的每个元素作为键值存储在哈希表中。
2. 如果当前元素已经在哈希表中出现过,则说明这是一个重复元素。
3. 如果遍历结束后没有找到重复元素,则说明数组中没有重复元素。
C++代码示例:
```cpp
#include <unordered_set>
#include <vector>
bool hasDuplicate(std::vector<int>& nums) {
std::unordered_set<int> hashSet;
for (int num : nums) {
if (hashSet.count(num) > 0) {
return true;
}
hashSet.insert(num);
}
return false;
}
```
使用排序的方法:
1. 对数组进行排序。
2. 遍历数组,比较相邻的元素是否相等,如果相等,则说明这是一个重复元素。
3. 如果遍历结束后没有找到重复元素,则说明数组中没有重复元素。
C++代码示例:
```cpp
#include <algorithm>
#include <vector>
bool hasDuplicate(std::vector<int>& nums) {
std::sort(nums.begin(), nums.end());
for (int i = 1; i < nums.size(); i++) {
if (nums[i] == nums[i - 1]) {
return true;
}
}
return false;
}
```
c++删除数组中重复元素
在C++中删除数组中的重复元素可以使用双重循环来实现。具体步骤如下:
1. 定义一个数组和数组长度len。
2. 使用双重循环,外层循环从0到len-1,内层循环从i+1到len-1,依次判断是否num[i]和num[j]相等,如果相等则进入第三层循环。
3. 第三层循环从j+1到len-1,将重复点j后面的所有元素都往前移动1,并将数组长度len-1,j也-1(判断向前移动的元素们的第一位,也就是移动后在j位上的这个元素,是否还相等。因为循环已经到了j,如果j不减1,则会跳过刚刚向前移动的元素,可能导致忽略的元素仍然重复)。
4. 最后输出删除重复元素后的数组。
下面是一个示例代码:
```
#include <iostream>
using namespace std;
int main() {
int len = 10;
int num[len] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 1};
cout << "before: ";
for(int i=0; i<len; i++) {
cout << num[i] << " ";
}
cout << endl;
for(int i=0; i<len; i++) {
for(int j=i+1; j<len; j++) {
if(num[j] == num[i]) {
for(int k=j+1; k<len; k++) {
num[k-1] = num[k];
}
len--;
j--;
}
}
}
cout << "after: ";
for(int i=0; i<len; i++) {
cout << num[i] << " ";
}
cout << endl;
return 0;
}
```