349. Intersection of Two Arrays。

本文介绍了一种简单有效的算法,用于找出两个整数数组的交集,并确保结果中每个元素都是唯一的。通过使用 C++ 中的 unordered_set 数据结构,该算法能够高效地找到并返回两个数组的交集。

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

Example:
Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2].

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


这个题比较简单,两个集合求交集,如果有多个元素只需要保存一个即可。可以使用set来存放结果,最后转换成vector即可。而且因为要求结果可以是无序的,所以使用unordered_set的话可能要比set快一点。

#include <iostream>
#include <vector>
#include <unordered_map>
#include <unordered_set>

using namespace std;

class Solution {
public:
    vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
        unordered_set<int> result;
        unordered_set<int> temp(nums1.begin(),nums1.end());//将num1转换成set。

        for(auto num : nums2) {
            if(temp.count(num)) result.insert(num);//如果temp中已经有了这个元素则存放在result中
        }

        return vector<int>(result.begin(),result.end());

    }
};

int main() {
    Solution s;
    vector<int> v1 = {1,2,3,1};
    vector<int> v2 = {1,1};

    vector<int> res = s.intersect(v1,v2);
    for(int num : res) {
        cout << num << endl;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值