博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode刷题42——数组的交集系列
阅读量:722 次
发布时间:2019-03-21

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

1.两个数组的交集

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

class Solution {
public: 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)); vector
::iterator vector_iterator; vector_iterator = unique(v.begin(),v.end()); if(vector_iterator != v.end()) {
v.erase(vector_iterator,v.end()); } return v; }};

或者

class Solution {
public: vector
intersection(vector
& nums1, vector
& nums2) {
vector
v; unordered_set
hash1,hash2; for(int i:nums1) hash1.insert(i); for(int i:nums2) {
if(hash1.count(i)>0&&hash2.count(i)==0) v.push_back(i); hash2.insert(i); } return v; }};

2.两个数组的交集 II

给定两个数组,编写一个函数来计算它们的交集。输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致,可以不考虑输出结果的顺序。
考察知识点:哈希表

class Solution {
public: vector
intersect(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)); return v; }};

或者

class Solution {
public: vector
intersect(vector
& nums1, vector
& nums2) {
vector
v; unordered_map
mp; for(int i:nums1) ++mp[i]; for(int i:nums2) {
if(mp[i]>0) {
v.push_back(i); --mp[i]; } } return v; }};

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

你可能感兴趣的文章