博客
关于我
leetcode刷题42——数组的交集系列
阅读量:727 次
发布时间:2019-03-21

本文共 1790 字,大约阅读时间需要 5 分钟。

给定两个数组,编写一个函数来计算它们的交集。输出结果中的每个元素一定是唯一的,可以不考虑输出结果的顺序。

方法一:使用排序和集合

这种方法通过对两个数组进行排序,然后使用标准库中的set_intersection函数找出交集元素。最后,使用unique函数去除重复元素:

#include 
#include
#include
using namespace std;vector
intersection(vector
& nums1, vector
& nums2) { vector
v; sort(nums1.begin(), nums1.end()); sort(nums2.begin(), nums2.end()); set_intersection(nums1.begin(), nums1.end(), nums2.begin(), nums2.end(), back_inserter(v)); auto it = unique(v.begin(), v.end()); if (it != v.end()) { v.erase(it, v.end()); } return v;}

方法二:使用哈希表

这种方法通过先将数组元素映射到哈希表中,然后检查元素是否存在于两个哈希表中,从而记录交集元素:

#include 
#include
using namespace std;vector
intersection(vector
& nums1, vector
& nums2) { unordered_set
hash1; unordered_set
hash2; vector
v; for (int num : nums1) { hash1.insert(num); } for (int num : nums2) { if (hash1.count(num) && !hash2.count(num)) { v.push_back(num); } hash2.insert(num); } return v;}

方法三:处理频率最低的元素

这种方法通过统计每个元素的频率,取两个数组中最小频率的元素:

#include 
#include
using namespace std;vector
intersect(const vector
& nums1, const vector
& nums2) { unordered_map
counter; for (int num : nums1) { counter[num]++; } vector
result; for (int num : nums2) { if (counter[num] > 0) { result.push_back(num); counter[num]--; } } return result;}

选择方法

选择哪一种方法取决于具体需求。第一种方法简单且有效,但在处理大数据量时可能较慢。第二种方法通过哈希表提高了效率,第三种方法则处理了元素频率的问题。

按照题目要求,每个元素在结果中只出现一次,因此无论选择哪种方法,只要确保交集元素唯一即可。如果需要优化性能,第二种方法通常更好。

转载地址:http://wvfgz.baihongyu.com/

你可能感兴趣的文章
Python编程快速入门
查看>>
Python编程基础(附Pycharm与开发环境)
查看>>
python 如何“否定“value : 如果为真则返回假,如果为假则返回真
查看>>
Python 如何在 Web 环境中使用 Matplotlib 进行数据可视化
查看>>
python 如何把字符串转换成浮点数
查看>>
python 如果文件夹不存在就创建文件夹
查看>>
Python 如果有很多或以收缩形式
查看>>
Python 子进程 Popen 与 Pyinstaller
查看>>
Python 子进程 Popen.communicate() 等价于 Popen.stdout.read()?
查看>>
Python 子进程 Popen:为什么会出现“ls *.txt“?不行?
查看>>
Python 子进程参数
查看>>
python 字典 key 和value 互换
查看>>
Python 字典 vs If 语句速度
查看>>
python 字典sorted自定义排序,按照key or value排序
查看>>
python 字典和列表区别_元组列表和字典的主要区别是什么?
查看>>
python 字符串中特定字符替换,截取
查看>>
Python 字符串总结
查看>>
python 字符串显示中文_Python字符串开头的b"、u"、r"与中文乱码
查看>>
Python 字符串的几种拼装方式
查看>>
python 存入数据库bigint_python基础_MySQL的bigint类型
查看>>