提交
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> result_set; // 存放结果,之所以用set是为了给结果集去重
unordered_set<int> nums_set(nums1.begin(), nums1.end());
for (int num : nums2) {
// 发现nums2的元素 在nums_set里又出现过
if (nums_set.find(num) != nums_set.end()) {
result_set.insert(num);
}
}
return vector<int>(result_set.begin(), result_set.end());
}
};
自己跑
#include<iostream>
#include<vector>
#include<tr1/unordered_set> //在c++11以前要使用unordered_map需要#include<tr1/unordered_map> https://blog.csdn.net/u012530451/article/details/53228098
using namespace std::tr1;//与此同时需要加上命名空间
using namespace std;
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> result_set; // 存放结果,之所以用set是为了给结果集去重
unordered_set<int> nums_set(nums1.begin(), nums1.end()); // 生成nums_num,包含nums1里所有元素
for (int num : nums2) { // 相当于 for (int num=0; num<nums.length; num++)
// 发现nums2的元素 在nums_set里又出现过
if (nums_set.find(num) != nums_set.end()) { // 找到了返回值的迭代器,找不到返回end
result_set.insert(num);
}
}
return vector<int>(result_set.begin(), result_set.end());
}
};
int main(){
vector<int> p1 = {1,2,3,3,4},p2 = {2,4,5};
Solution so;
vector<int> p = so.intersection(p1,p2);
// vector输出
vector<int>::iterator it;
for(it = p.begin();it != p.end();it++)
cout<< *it <<" ";
}