給定兩個數組,編寫一個函數來計算它們的交集。
示例 1:
輸入: nums1 = [1,2,2,1], nums2 = [2,2]
輸出: [2]
示例 2:
輸入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
輸出: [9,4]
說明:
輸出結果中的每個元素一定是唯一的。
我們可以不考慮輸出結果的順序。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/intersection-of-two-arrays
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
思路
這題相當於set容器的例題了
- 利用set可以去重的特性,將
數組1
元素加入set1
- 遍歷
數組2
元素,查詢元素是否在set1
中 - 如果在,那麼就是交集元素,將元素放入
set2
(爲了去重) - 最後
set2
轉爲vector
輸出
代碼
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2)
{
vector<int> ans;
// 數組1到集合1
set<int> s1(nums1.begin(), nums1.end());
set<int> s2;
set<int>::iterator it1, it2;
// 遍歷數組2,查詢集合1,找到的就是答案
for(int i=0; i<nums2.size(); i++)
{
it1 = s1.find(nums2[i]);
if(it1 != s1.end())
{
// 答案放到set2去重
s2.insert(nums2[i]);
}
}
// set轉vector
ans.assign(s2.begin(), s2.end());
return ans;
}
};