1. 程式人生 > >兩個數組的交集

兩個數組的交集

插入 元素 並且 turn nor 答案 for write hash

Given two arrays, write a function to compute their intersection.

Example 1:

Input: nums1 = [1,2,2,1], nums2 = [2,2]
Output: [2]

Example 2:

Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
Output: [9,4]

Note:

  • Each element in the result must be unique.
  • The result can be in any order.

題意:求兩個數組的交集,交集中的元素是唯一的,可以是任意順序。

思路:利用哈希集合,首先將數組1的值插入到哈希集合中,利用哈希集合自動去重,然後遍歷數組2,如果這個元素在哈希集合中出現過,那麽就存入到結果數組中,這裏要註意,把哈希集合中的該元素也要刪除(不然如果後面數組2還有相同的元素,就又加入到結果數組了,結果數組就會有元素重復)。

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_set<int> hashset;
        
int len=nums1.size(); vector<int> ans(len,0); //開始聲明了大小,賦值了,後面記得重新設置大小 for(int i=0;i<len;i++){ //把nums1放入hashset,自動去掉重復了 hashset.insert(nums1[i]); } int n=0; //nums2與hashset比較,count=1就保存到答案,並且把hashset中的那個鍵值給去掉 for(int i=0;i<nums2.size();i++){
if(hashset.count(nums2[i])!=0){ ans[n++]=nums2[i]; hashset.erase(nums2[i]); } } ans.resize(n); return ans; } };

兩個數組的交集