方法一(第一时间想到,LeetCode报错,原因未知):
vector<int> intersect(vector<int>& nums1, vector<int>& nums2)
{
vector<int> vec;
if (nums1.empty() || nums2.empty())
return vec;
for (int i = 0; i < nums1.size(); ++i)
{
for (int j = 0; j < nums2.size(); ++j)
{
if (nums1[i] == nums2[j])
{
vec.push_back(nums1[i]);
break;
}
}
}
return vec;
}
方法二(目前最好):
vector<int> intersect(vector<int>& nums1, vector<int>& nums2)
{
vector<int> vec;
if (nums1.empty() || nums2.empty())
return vec;
map<int, int> ch;
for (auto c : nums1)
ch[c]++;
for (auto c : nums2)
{
if (ch[c]-- > 0)
vec.push_back(c);
}
return vec;
}