class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
int a,b,c;
vector<int> result;
sort(nums1.begin(),nums1.end());
sort(nums2.begin(),nums2.end());
nums1.erase(unique(nums1.begin(), nums1.end()), nums1.end());
nums2.erase(unique(nums2.begin(), nums2.end()), nums2.end());
a = nums1.size();
b = nums2.size();
for (int i=0;i<a;i++)
{
for(int j=0;j<b;j++)
{
if(nums1[i]==nums2[j])
result.push_back(nums1[i]);
}
}
return result;
}
};
这是我自己打的代码
下面是编译器测试代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c;
vector<int> nums1,nums2,result;
while(cin>>a)
{
if(a==-1)
break;
else
{
nums1.push_back(a);
}
}
while(cin>>a)
{
if(a==-1)
break;
else
{
nums2.push_back(a);
}
}
sort(nums1.begin(),nums1.end());
sort(nums2.begin(),nums2.end());
nums1.erase(unique(nums1.begin(), nums1.end()), nums1.end());
nums2.erase(unique(nums2.begin(), nums2.end()), nums2.end());
a = nums1.size();
b = nums2.size();
for (int i=0;i<a;i++)
{
for(int j=0;j<b;j++)
{
if(nums1[i]==nums2[j])
result.push_back(nums1[i]);
}
}
c=result.size();
for (int i=0;i<c;i++)
cout<<result[i]<<endl;
return 0;
}
这是我在评论中看到的代码
class Solution { public: vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
vector<int> ret;
set<int> s;
for (int i = 0; i < nums1.size(); i++)
{
if (find(nums2.begin(), nums2.end(), nums1[i]) != nums2.end())
{
s.insert(nums1[i]);
}
}
ret.assign(s.begin(),s.end());
return ret;
}
};
这思路是一样的 但是这代码量差距也太大了.set是类似vector的一种数据结构,并且有去除重复的功能,assign是把数据放入到vector中。find函数在用于查找不同数组中同样的数据用的方法真是简单暴力啊。以后要记得。