算法-哈希表篇02-两个数组的交集

两个数组的交集

力扣题目链接

题目描述

给定两个数组 nums1 和 nums2 ,返回它们的交集

输出结果中的每个元素一定是唯一的。我们可以 不考虑输出结果的顺序 。

解题思路

我们使用一个哈希表来存储nums1中的元素,然后遍历数组nums2,并查找哈希表中是否含有该元素,如果含有则是两者交集,存储在ans数组中。

题解

复制代码
class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        vector<int> ans;
        unordered_set<int> us(nums1.begin(), nums1.end());
        for(int x : nums2){
            if(us.count(x)){
                ans.push_back(x);
                us.erase(x);
            }
        }

        return ans;
    }
};

总结

主要是要理解,这道题如果使用双循环遍历两个数组也是可以的,但是这样的作法时间复杂度为O(n2)n的平方,使用哈希表,查询效率为O(1)所以,总体的时间复杂度为O(n),在时间上优化了算法。

相关推荐
前端摸鱼匠1 小时前
【AI大模型春招面试题11】什么是模型的“涌现能力”(Emergent Ability)?出现条件是什么?
人工智能·算法·ai·自然语言处理·面试·职场和发展
MORE_771 小时前
leecode-合并区间-贪心算法
算法·贪心算法
2401_873204651 小时前
分布式系统安全通信
开发语言·c++·算法
sw1213893 小时前
C++中的代理模式实战
开发语言·c++·算法
ballball~~3 小时前
ISP-CCM(Color Correction Matrix)
图像处理·数码相机·算法
sheeta19983 小时前
LeetCode 每日一题笔记 日期:2025.03.24 题目:2906.构造乘积矩阵
笔记·leetcode·矩阵
Sunshine for you4 小时前
实时操作系统中的C++
开发语言·c++·算法
中科院提名者4 小时前
BPE 算法的硬核拆解——理解词表(Vocabulary)是如何从零训练出来的,以及字符串是如何被切碎的
算法
「QT(C++)开发工程师」4 小时前
C++11三大核心特性深度解析:类型特征、时间库与原子操作
java·c++·算法
乐分启航4 小时前
SliMamba:十余K参数量刷新SOTA!高光谱分类的“降维打击“来了
java·人工智能·深度学习·算法·机器学习·分类·数据挖掘