計算兩個數(shù)組的交
注意事項:
每個元素出現(xiàn)次數(shù)得和在數(shù)組里一樣
答案可以以任意順序給出
樣例
nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].
排序+雙指針
和547相同,這里不過要求不去重,不去重相對來說是簡單的柴灯,排序后用雙指針是最簡單的一個方法:
vector<int> intersection(vector<int> nums1, vector<int> nums2) {
// write your code here
if(nums1.empty()||nums2.empty()) //特殊情況
return vector<int>();
sort(nums1.begin(),nums1.end());
sort(nums2.begin(),nums2.end());
//雙指針
auto beg1=nums1.begin();
auto beg2=nums2.begin();
vector<int> res;
//雙指針遍歷
while(beg1!=nums1.end()&&beg2!=nums2.end())
{
if(*beg1==*beg2)
{
res.push_back(*beg1);
beg1++;
beg2++;
}
else if(*beg1<*beg2)
{
beg1++;
}
else beg2++;
}
return res;
}
基本上沒有什么要注意的,特殊情況排除掉就可以了赠群。