算法-哈希表篇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),在时间上优化了算法。

相关推荐
黑牛先生11 小时前
【GDB】调试Jsoncpp源码
开发语言·c++·算法
大大大大物~11 小时前
JVM 之 垃圾回收算法及其内部实现原理【垃圾回收的核心问题有哪些?分别怎么解决的?可达性分析解决了什么问题?回收算法有哪些?内部怎么实现的?】
jvm·算法
不夜牛仔11 小时前
算法笔记19 - 图和通用结构 | 图的两种遍历 | 三种拓扑排序 | 两种最小生成树算法Kruskal, Prim | 最短路径算法Dijkstra
笔记·算法
小龙报12 小时前
【算法通关指南:基础算法篇】高精度专题:一篇破除超数运算问题
c语言·数据结构·c++·算法·链表·贪心算法·visual studio
ULTRA??12 小时前
Informed RRT*算法,并包含圆形障碍物环境
人工智能·python·算法
Yupureki12 小时前
《算法竞赛从入门到国奖》算法基础:入门篇-双指针
c语言·开发语言·数据结构·c++·算法·visual studio
AshinGau12 小时前
权重衰减(Weight Decay)
神经网络·算法
Liangwei Lin12 小时前
洛谷 P3367 【模板】并查集
算法
dyxal12 小时前
动态规划:给“最优解”一张记住过去的备忘录
算法·动态规划·代理模式
炽烈小老头12 小时前
【每天学习一点算法2025/12/16】二叉树的最大深度
学习·算法