LeetCode:349 兩個數組交集 set簡單運用

給定兩個數組,編寫一個函數來計算它們的交集。

示例 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;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章