Day13 代码随想录打卡|哈希表篇---两个数组的交集

题目(leecode T349):

给定两个数组 nums1 和 nums2 ,返回 它们的 交集。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。

方法:本题最佳的数据结构是C++中的unordered_set,因为本题的要求中说明了每个元素都是唯一的并且不考虑输出的顺序,而unordered_set这个数据结构就能很好的满足这个去重并且无序的要求,我们可以把nums1的数组转换成unorder_set的结构然后遍历nums2中的元素,查找nums2中的元素是否在nums1中出现,如果出现,就把他加入结果集中。

哈希结构很适合用于判断某个元素是否在其中的情况,遇到这种题并且输出结构无序且不重复就可以使用unorder_set

题解:

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_set<int> result_set;             //创建保存结果的unordered_set可以去重
        unordered_set<int> nums_set(nums1.begin(), nums1.end());//将nums1转换为unordered_set
        for(int num: nums2){           //遍历nums2中的元素
            if(nums_set.find(num) != nums_set.end()){  //查看nums2中的元素是否在nums1中出现过
                result_set.insert(num);               //如果出现就把他加入到结果集中
            }
        }
        return vector<int>(result_set.begin(), result_set.end()); //将结果集转换为vector类型
    }
};

  • 14
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值